Session kullanıyorsanız tabii ki session directory kullanmalısınız.. XSS'in çözümü de referrer'ı kontrol ettirmeniz. Tabi zaten iş büyürse, en iyisi açıklara karşı testerlar tutmanız.

Çözümünü de ben yazayım, Session

Scriptte XSS açığı mevcutsa yada sunucuda mod_userdir fonksiyonundan kaynaklanan bug ile sizinle aynı sunucuyu paylaşan başka biri tarafından session oturumunuzda basitçe çalınabilir. Önemli olan özenle, dikkatli kodlamak ve sağlam bir sunucuda barınmak. Hatta imkan varsa sunucu kiralamak.

Merhaba arkadaşlar. Bu dökümanı daha önce başka bir nickle bir webmaster forumunda paylaşmıştım. Tamamen kendi dökümanımdır. Umarım beğenirsiniz. Konumuz; PHP'de Cookie kullanımının doğru yapılmaması sonucu ortaya çıkan ve PHP programlama bilgisine sahip kötü niyetli arkadaşların bunu kendilerine bir fırsat olarak dönüştürmesi. İlk olarak cookie fonksiyonu nasıl hatalı bir şekilde kullanıldığını bir örnek kod ile açıklayacağım. PHP: <?php $kullaniciadi = strip_tags ; $kullaniciparola = strip_tags ; if else{ $sor = @mysql_query ; if(@mysql_num_rows > 0) else ?> Evet yukarıda ki kod düzeninde ilk bakışta göze çarpan bir hata yok gibi görünsede aslında çok riskli bir açığı kendi ellerimizle oluşturduk. Yukarıda ki kod düzenini açıklamak gerekirse; PHP: $kullaniciadi = strip_tags ; $kullaniciparola = strip_tags ; Bu kısımda formdan gelen değerler bir değişkene atanıyor. Atama sırasında HTML kodlarını devre dışı bırakan strip_tags fonksiyonu kullanılıyor. İlk if sorgusunda yukarıdada belirttiğim gibi kontroller yapılıyor. PHP: $sor = @mysql_query ; if(@mysql_num_rows > 0){ echo "Merhaba $kullaniciadi. Başarıyla giriş yaptınız."; setcookie("kullaniciadi", $kullaniciadi, time +60 60); Ve kullanıcının gönderdiği bilgileri $sor değişkeni üzerinden veritabanında karşılığının var olup olmadığına bakıyoruz. Eğer ki karşılığı var ise kullanıcıya güleryüzlü bir şekilde merhaba diyoruz. Ve sıra geldi setcookie fonksiyonu ile kullanıcının girdiği bilgilerin saklanmasına ve bu bilgilerin sitede kullanılmasına. Bunun için oluşturduğumuz cookie'ye kullaniciadi adını veriyoruz. Ardından kullaniciadi adında ki cookie'ye anahtar değerini yani formdan gelen $kullaniciadi değişkenini belirtiyoruz. Böyle bir kod düzenine sahip bir site ne zaman güvende olabilir? Bir düşünelim; Firefox ve Opera gibi tarayıcıların Cookie Editor denilen araçları kullanılmasa yada hiç üretilmeseydi belki... Bu konu hakkında pek bilgi sahibi olmayan arkadaşlar için bir Screen koyalım. Yukarıdaki screen'den anlayabildiğiniz gibi tüm web tarayıcıları Cookie ve Session oturumlarını üzerinde bir yerlerde saklarlar ki sitede rahatça dolaşabileysiniz. Peki bu kötü amaçlı kişiler bu Cookie Editor'le ne yapabilirler. Resimde gördüğünüz gibi bende örnek bir site buldum. Ama kesinlikle adını paylaşmıyorum. Örnekte gördüğünüz Cookie'nin adı KAdi, hemen altındada kullanıcıadı yer alıyor. Şimdi ben sitede bulunan başka bir kullanıcı adını bulup benimkiyle yer değiştirip, tamama tıkladıktan sonra sayfayı yenilememle birlikte yazdığım kullanıcıadının hesabında buluyorum kendimi. Peki daha kötüsü olamaz mı? Sitede ki yöneticinin kullanıcı adını bulmak o kadar zor olmasa gerek? Kötü niyetli kişiler bunu yapabilir ve sitenizin yönetim paneline erişip, zarar verebilir.