Konuyu görüntüle
IUCODERS FORUM > Programlama > JAVA > Jsp ve Xml
Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
13.03.2008-21:07 #39772
yapmak istediğin şeyin yapılış şekli doğru değil.





N/A
Yazar
nipci


avatar

Kayıt: 26.09.2007
16.03.2008-14:48 #39883
nipci yazdi
 


Guvenlige gelince şimdilik idare etcek bişi var zaten.login olduktan sonra degeri deisen bi parametre var. her sayfa basında onu kontrol ettiriom.Zaten o konuda sorularım ilerleyen gunlerde gelecek:D.



Sadece login olunarak girilebilecek sayfalara erişimi nasıl engelleyebilirim?
Yukardaki yöntemi bi yerde okumuştum.Denedim 1 yerde açık veriyor.

Bu konuda özellikle tecrübeli arkadaşlardan yardım istiyorum.Kaynak gösterebilirseniz ya da tarif edebilirseniz sevinirim.

Tesekkürler...





Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
16.03.2008-14:59 #39885
Senin login işleminde kullandığın mantığa bağlı. Hazır bir script kullanıyorsan zaten hatalıdır demektir.





Let`s make this world a better place to live !

Yazar
audtou


avatar
malatya
Kayıt: 31.08.2006
16.03.2008-15:46 #39887
session nesnesine bi değişken ekleyerek yapabilirsin.Mesela kullanıcı isim-şifre bilgilerini girdikten sonra veritabanından sorguyu çekersin,eğer kullanıcı bilgileri doğruysa session'a bi nesne eklersin.

session.setAttribute("sifre","gecerli"); şeklinde

Sadece login olunarak girilebilen sayfaların başınada şu kodu eklersen

if(session.getAttribute("sifre") != "gecerli"){
response.sendRedirect("login.html"); /burda kullanıcıyı şifresi gecerli degilse login.html ye gönderirsin/
}
else{
-------
-------
}






bitiyo lan!
Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
16.03.2008-15:55 #39889
Ben login işlemini doğrulamak için sabit değer kullanılmasını güvenli bulmuyorum. Gerisini sildim :D





Let`s make this world a better place to live !

Yazar
audtou


avatar
malatya
Kayıt: 31.08.2006
16.03.2008-15:57 #39890
yada bi bean kullanarak yapabilirsin
public class oturumBean {
    public oturumBean(){ }
    private boolean isLogged=false;
    private String isim;
    private String soyIsim;

    public boolean isIsLogged() {
        return isLogged;
    }

    public void setIsLogged(boolean isLogged) {
        this.isLogged = isLogged;
    }

    public String getIsim() {
        return isim;
    }

    public void setIsim(String isim) {
        this.isim = isim;
    }

    public String getSoyIsim() {
        return soyIsim;
    }

    public void setSoyIsim(String soyIsim) {
        this.soyIsim = soyIsim;
    }
    public void cikis(){
        soyIsim="";
        isim="";
        isLogged=false;
    }
}

kullanıcı bilgilerini aldıgın *.jsp nin başına şunları eklersin

<jsp:useBean id="oturum" scope="session" class="packageName.oturumBean" />

sonra kullanıcıdan bilgileri alıp veritabanından sorgulattırırsın
if(!oturum.isIsLogged()){
            if(request.getMethod().equals("POST")){
                String isim="",sifre="";
                isim=request.getParameter("isim");
                sifre=request.getParameter("sifre");
		.....//veritabanı baglantısı
		.....
		ResultSet rs= xxx.executeQuery()
                if(rs.next()){
			oturum.setIsLogged(true);
                        oturum.setIsim(rs.getString("isim"));                        
                        oturum.setSoyIsim(rs.getString("soyIsim"));			
                }
                else{
                        out.println("boyle birisi yok<a href='login.html'> geri git</a>");
                }
            }       
            else{
                response.sendRedirect("login.html");
            }
}
if(oturum.isIsLogged()){
	-------//kullanıcı loginse yapacagın şeyler
	------
}	

ve login olmadan girilemeyecek her sayfaya şu kodu eklersin
<jsp:useBean id="oturum" scope="session" class="packageName.oturumBean" />

if(oturum.isIsLogged()){
	...	
	...
}
else{
	response.sendRedirect("login.html");
}

bide logout sayfasında şunları yaparsın
if(oturum.isIsLogged()){
                oturum.cikis();
                session.invalidate();
                out.println("guvenli bir sekilde ciktiniz");
                              
}
else{
                response.sendRedirect("login.html");                
}






bitiyo lan!
Yazar
audtou


avatar
malatya
Kayıt: 31.08.2006
16.03.2008-16:05 #39891
aslında iucoders'ta nasıl kontrol edildigini merak ettim.Orhan kendi yöntemini yazarsa iyi olur





bitiyo lan!
Yazar
nipci


avatar

Kayıt: 26.09.2007
16.03.2008-16:33 #39895
audtou yazdi
 
session nesnesine bi değişken ekleyerek yapabilirsin.Mesela kullanıcı isim-şifre bilgilerini girdikten sonra veritabanından sorguyu çekersin,eğer kullanıcı bilgileri doğruysa session'a bi nesne eklersin.

session.setAttribute("sifre","gecerli"); şeklinde

Sadece login olunarak girilebilen sayfaların başınada şu kodu eklersen

if(session.getAttribute("sifre") != "gecerli"){
response.sendRedirect("login.html"); /burda kullanıcıyı şifresi gecerli degilse login.html ye gönderirsin/
}
else{
-------
-------
}


Bahsettigim yol tam olarak bu.

Tek açığı da ; eger kullanıcı login olur, sonra da logout olarak cıkarsa, Browser kapanmadıgı surece girmemesi gereken url e, url i direk yazarak girebiliyor.

cikis.jsp de
oturum.removeAtribute(parametre)
oturum.invalidate()
yapıom ama işe yaramıo.

Bunun dısında baska acık yok.
Browser kapanırsa kesinlikle girilmemesi gereken sayfaya ulasamıyor.

Nasıl çözebilirim fikri olan var mı?
Bir de bu yöntem yeterince güvenli mi?(Ek olarak safagın dedigi gibi parametre degerini dinamik yapacam.Tabi su bahsettim sorunu cozebilirsem:))





Yazar
audtou


avatar
malatya
Kayıt: 31.08.2006
16.03.2008-16:53 #39896
nipci yazdi
 


cikis.jsp de
oturum.removeAtribute(parametre)
oturum.invalidate()
yapıom ama işe yaramıo.

Bunun dısında baska acık yok.
Browser kapanırsa kesinlikle girilmemesi gereken sayfaya ulasamıyor.

Nasıl çözebilirim fikri olan var mı?
Bir de bu yöntem yeterince güvenli mi?(Ek olarak safagın dedigi gibi parametre degerini dinamik yapacam.Tabi su bahsettim sorunu cozebilirsem:))

aynı sorun bende firefox da olmuyor ama Operada maalesef oluyor.Hatta operada browseri kapatıp açsamda girilmemesi gereken sayfalara girebiliyor.Ben de bilmiyorum sebebini





bitiyo lan!
Yazar
audtou


avatar
malatya
Kayıt: 31.08.2006
16.03.2008-17:13 #39897
firefox da gayet güzel çalışan session lu sayfalar operada neden sapıtıyor ya?angryBazı sayfalar sessiona ulaşamıyor bazıları sessiona yeni nesneler eklenmesine rağmen eski halinde kalıyor
Opera nın cache lemesiyle bi ilgisi varmı acaba?





bitiyo lan!
Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
16.03.2008-23:52 #39918
opera sayfayı cacheleyebiliyor bunun için sayfaya link verirken ucuna rastgele birşey ekleyebilirsin yada sayfayı komple cache kaparsın.

http://www.iucoders.com/pm.jsp?4.510173782244859
gibi





N/A
Yazar
onur


avatar
Two Story Town
Kayıt: 14.01.2006
17.03.2008-08:48 #39940
nipci yazdi
 
audtou yazdi
 
session nesnesine bi değişken ekleyerek yapabilirsin.Mesela kullanıcı isim-şifre bilgilerini girdikten sonra veritabanından sorguyu çekersin,eğer kullanıcı bilgileri doğruysa session'a bi nesne eklersin.

session.setAttribute("sifre","gecerli"); şeklinde

Sadece login olunarak girilebilen sayfaların başınada şu kodu eklersen

if(session.getAttribute("sifre") != "gecerli"){
response.sendRedirect("login.html"); /burda kullanıcıyı şifresi gecerli degilse login.html ye gönderirsin/
}
else{
-------
-------
}


Bahsettigim yol tam olarak bu.

Tek açığı da ; eger kullanıcı login olur, sonra da logout olarak cıkarsa, Browser kapanmadıgı surece girmemesi gereken url e, url i direk yazarak girebiliyor.

cikis.jsp de
oturum.removeAtribute(parametre)
oturum.invalidate()
yapıom ama işe yaramıo.

Bunun dısında baska acık yok.
Browser kapanırsa kesinlikle girilmemesi gereken sayfaya ulasamıyor.

Nasıl çözebilirim fikri olan var mı?
Bir de bu yöntem yeterince güvenli mi?(Ek olarak safagın dedigi gibi parametre degerini dinamik yapacam.Tabi su bahsettim sorunu cozebilirsem:))


Burada session daki sifreyi kontrol etmek pek dogru bir yontem degil tabiki.
Onun yerine session da "userLogged" gibi bir attribute koyarak kontrol etmek daha guzel olacaktir.
Bu isi session ile cozmektense audtou arkadasin soyledigi gibi session scope ta bir user bean tutup bunun property lerini bir method araciligiyla degistirme yontemi de olabilir.

cikis sayfasinda scopetaki user bean in logged in boolean degerini false a cekip
session.invalidate() seklinde session i da gecersiz kilarsaniz baska birsey yapmaniza gerek kalmaz.

Eger ciktiktan sonra hala login olunup da girilmesi gereken sayfaya ulasilabiliyorsa o girdigi sayfa ici kontollerinizde bir sorun vardir.








Yazar
nipci


avatar

Kayıt: 26.09.2007
17.03.2008-10:53 #39941
****************************************************************
<jsp:useBean id="oturum" scope="session" class="oturum.oturumBean" />
<%
if(oturum.IsLogged()){
oturum.cikis();

HttpSession o = request.getSession();
o.invalidate();

response.sendRedirect("index.jsp");
}

%>
********************************
Beanle de yaptım.
oturum.cikis(); false deger atıyor kontrol ettim.

Su ana kadar önerilen 2 yolda da aynı sorun var aslında sorun kodda deil, kodda olsa 2 yol da firefox da calısmazdı.

Bean le yapılan da yine firefox da sorunsuz calısıo , ama IE de yine önceki bahsettiğim problem mevcut.IE de illegal girişte bişiyi sil dersen o an yine listede görünüyor(yani sayfa yenilemesi işlemi yapmıo) ama siliyor.Bi sonraki legal açışta silindini goruosun.
IE ve (arkadas da opera da aynı sorun var demiş) opera da sorun oluo.

orhan yazdi
 
opera sayfayı cacheleyebiliyor bunun için sayfaya link verirken ucuna rastgele birşey ekleyebilirsin yada sayfayı komple cache kaparsın.

http://www.iucoders.com/pm.jsp?4.510173782244859
gibi


Bu konuda bilgi verebilir misiniz?







Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
17.03.2008-11:02 #39942
sayfasyı bellekleme özelliğini kapamak için head tagları arasına

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">

yada jsp içinden

response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");

sayfanın belleğe alınmamasını istiyorsan

<a href="x.jsp?<%=new java.util.Date()%>">link</a>





N/A
Yazar
nipci


avatar

Kayıt: 26.09.2007
17.03.2008-11:42 #39943
Herkese Tesekkurler sonunda oldu biggrin....







1 2 3
Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb