Php de Sessionlar Ne Kadar Güvenli?

Tarih: Kasım 5th, 2008 | Yazar: | Kategori: Makaleler | Etiketler: , , , , , , , , , , , , , , , , , | 6 Yorum »

Merhaba arkadaşlar. Genelde güvenlik üzerine yazılar yazmayı hiç sevmem. Yalan yanlış bilgiler sonucunda kişilere bir zarar verilebilir. Fakat her webmaster giriş sisteminde elbet session kullanıyor. Hatta ilk öğrenilen fonksiyonda session_start(); oluyor.

Durum bu olunca yazdığımız scriptlerin güvenliğide bizleri telaşa düşürebilir. Bu yazıyı yazarken sadece benden değil birkaç kaynaktan da yeni öğrendiklerimi ekliyorum. Sonuçta “Her heyi bilen aslında hiçbir şey bilmeyendir” :)

Arkadaşlar bilirsiniz ki cookieler bizim tmp dosyalarımıza ekleniyor. Yani server tabanlı bir fonksiyon değil. Bu yüzden kişilerin verileri değiştirmesi sonucu açıklar ortaya çıkıyor. Md5 in bile kırıldığı bu zamanda kimseye güvende kalmadı. Bu yüzden herkes server tarafında birşeyler yapmaya çalışıyor. İşte sessionlar da tam bu noktada devreye giriyor. Cookie ler bizim tmp lerimize sessionlar ise server ın tmp lerine ekleniyor. Her server da tmp klasörlerin chmodu 777 dir. Yani bütün izinler verilmiş durumda. Bunun nedeni server side işlemlerin yapılabilmesidir.

Eğer üstten birşey anlamadıysanız demek istediğim sessionlar server a ekleniyor. Bir hacker ın session çalabilmesi için ilk önce server a sızması lazım. Bu durumda kendi güvenliğinizden önce server ın güvenliğe dikkat etmelisiniz. Sabıkalı server lardan kaçınılmalıdır.

Diyelim birşeyler oldu ve hacker server a sızarak session kayıt etti, haybeden giriş yaptı. Bu durumda yapmanız gereken birkaç işlem var. Bu işlemlere geçmeden önce nasıl admin hack ediliyor onu göstereyim;

Şimdi biz blog scriptmizde hatırlarsanız id verisini bir sessiona atıyorduk ve ayarlar.php de her seferinde yeniletip veritabanından veri çekiyorduk. Demek ki id miz 1 olursa büyük ihtimal admin oluyoruz. İşte hacker sessionu kaydederken ( sessionlar galiba txt şeklinde emin değilim yanlız ) içinde id verisini değiştiriyor. Sizin aklınıza md5 ile şifreleyip kaydederek hacker ın id verisini bulamamasını sağlamak gelebilir. Evet bu da bir yere kadar çok doğru bir hareket sayılabilir. Yanlız server ı hack edebilen biri zaten md5 şifrelerini de kırabilir.

Ara Not: Arkadaşlar aslında yazımızda mantık hatası var. Neden derseniz; server ı hack edebilen biri veritabanını da ele geçirebilir. Bir de md5 kırıcı ile yapamayacağı şey yoktur. Aslında yaptıklarımızın hepsi boşa. Güçlü bir hacker ı önlemek için ilk önce server tarafında çalışmaların yapılması lazım.

Peki bu session olayını nasıl güvenli kılacağız diyorsanız sizlere online kullanıcılar sistemini kurmanızı öneririm. Hemen bu olayın mantığını vereyim;

Arkadaşlar diyelim her üye girişinde bazı sessionlar atanıyor. Biz iki session yapısı yapacağız. Birinci oturum_sifresi adlı session. Bunu ayarlar.php de kullanacağız. Kişi giriş yaptığı anda online kullanıcılarda görünmesi için veritabanına bazı verilerin ( id verisi gibi ) ekleneceği sırada birde güvenlik şifresi ekleyeceğiz. Bu şifreyi kendi kombinasyonlarımıza göre yaratmalıyız. Abuk sabuk karakterleri birde md5 e çevirerek veritabınına id verisi ile oturum_sifresi olarak ekliyoruz. Daha sonra oturum_sifresi sessionuna da bu şifreyi atıyoruz. ayarlar.php de de her seferinde karşılaştırıyoruz. İşte bu yöntem ile kesin bir güvenlik sağlamış oluruz.

Bu yazımda sizlere Php ve Sessionlarda Güvenlik konusunda bazı şeyler anlatmaya çalıştım. Umarım faydalı olmuştur… Sorularınızı sorabilirsiniz.

Herkese iyi günler, iyi çalışmalar…




Benzer Yazılar;

coded by nessus

“Php de Sessionlar Ne Kadar Güvenli?” yazısında 6 Ahkam var.

  1. 1 Uğur Erkan 00:10 on Aralık 6th, 2008 anında kesmiş:

    Şöyle bir sorum olucak aslında server taraflı dedik sessionlara session bilgilerini hacker’ımız nasıl değiştiriyor server erişimini nasıl aldı ?
    zaten bunu yaptıysa sessionlar ile fantezi yapmak yerine ftpye bağlanamaz mı ?

  2. 2 Youngwe 16:53 on Aralık 6th, 2008 anında kesmiş:

    Zaten yazımda da bunu anlatıyorum. Siz ne yaparsanız yapın adam server taraflı bir hack saldırısı yapıyorsa zaten iş bitmiştir. Çünkü sessionlar aynı bizim işletim dosyalarımız gibi bir klasörde saklanıyor. Hacker o klasöre ulaştıysa diğer dosyalara da ulaşır. Kısaca böyle bir hack saldırısı tamamen server tarafına aittir. Bunlarda yapılabilecek “kimlik sahtekarlığı” için gerekli ufak yöntemler…

  3. 3 kemal 07:44 on Temmuz 21st, 2009 anında kesmiş:

    Bilgi sahibi olmadığın teknik konularda yazma bence. Yarım bilgilerle anlatılacak mevzular değil bunlar.

  4. 4 EeTr 14:57 on Temmuz 21st, 2009 anında kesmiş:

    Merhaba Kemal bey;

    Mağdem siz bu konularda daha bilgilisiniz lütfen buyrun anlatın ve herkes bilgilensin. Cookie nin karşı tarafta yaratılan halinden farksızdır oturumlar. Ama bu yarım bilgi ise tabi söz sizin. Yakın zamanda güzel bir açıklama yaparsınız umarım…

  5. 5 Ali Unutan 01:13 on Ağustos 2nd, 2009 anında kesmiş:

    sessionları güvenli bir yola getirmenin hali şudur ki veri tabanında geçici tablolarda bulundurmak tabiki sql server bunu destekliyor aphace serverlar için belki bir ek kurulum ve ya güncellemesi olabilir ancak dikkat edilecek bir husus daha var ki session_register(“id”);
    session_register(“uyeid”);
    session_register(“kulid”);
    gibi basit tanımlamalar kullanılmamasıdır çünkü site içerisinde her hangi bir text kutusunda dahi (eğer bir önlem alınmamışsa) explorer üzerinden gönderilerek te kırılabilir… tabi bu biraz daha amatör web masterların yaptığı sitede mümkündür ki find and replace fonksiyonlarını yazamazlar ise… belkide session(“id”); dediğimiz kısma kendi şifreleme fonksiyonumuzla bir değer atarsak ta güvenliğin bir yoludur fakat find and replace kadar hızlı olucağını sanmıyorum… En güvenli yol 1. session değerlerini veri tabanında geçici tablolarda tutmak 2. her tekst ve ya sayı değeri girilebilecek alanlarda find and replace fonksiyonunu kullanmak… :)

  6. 6 jquery turkiye 16:26 on Şubat 26th, 2011 anında kesmiş:

    tşekkür ederima arkadaşım çok güel anlatım


Ahkam Kesme Aparatı

  • *