• 11-04-2010, 17:56:09
    #1
    Merhaba arkadaşlar güvenlik açıkları hakkında iki tane sorum var bunların çözümünü bulamadım
    1.si
    Diyelim bir yorum sistemim var ve kullanıcı javascript ile cookieyi kendi sitesine yolladı. bu nasıl bir açık oluşturabilir ? bunu anlayamadım
    2.si ise üye giriş işlemlerinde session_id'nin özelliği nedir ve giriş yapınca session_id'yi değiştirmeye gereksinim duyarız değiştirmezsek nasıl sisteme sızabilirler ?

    vereceğiniz cevaplar için şimdiden teşekkür ediyorum
  • 11-04-2010, 17:58:48
    #2
    Eskiden bu olay hotmail de de mevcuttu.
    Size özel olusturulan bir cookie id sini ele geçirerek sizin oturumunuzu yönetiyor.Kısaca böyle birşey.
  • 11-04-2010, 18:57:11
    #3
    Peki session ?
    örnek bir kod vereyim
    <?php
    session_start();
    if ( $_SESSION['login'] )
    {
        echo 'giriş yapıldı';
    }
    else
    {
       $_SESSION['login'] = true;
    }
    session atamasını bu şekilde yapıyorum. Yani bu hack edilebilir mi ?
    daha ne yapabilirim güvenliği arttırmak için? session_id ile arasında ki bağlantı ne ? :S
  • 11-04-2010, 19:17:23
    #4
    Üyeliği durduruldu
    güvenlik kapsamlı olaydır. şimdi sana sesion öyle olmaz veya olur desek muhakkak ondada pürüz çıkar. session nedir kimler ulaşabilir şeklinde bir araştırma yap.
    paylaşımlı sunucularda session ile bazen sorunlar çıkabilir.dediğim gibi kapsamlı konu.
  • 11-04-2010, 19:30:51
    #5
    Cycl0ne adlı üyeden alıntı: mesajı görüntüle
    Peki session ?
    örnek bir kod vereyim
    <?php
    session_start();
    
    if (isset($_SESSION['login']) )
    {
        echo 'giriş yapıldı';
    }
    else
    {
      
    }
    session atamasını bu şekilde yapıyorum. Yani bu hack edilebilir mi ?
    daha ne yapabilirim güvenliği arttırmak için? session_id ile arasında ki bağlantı ne ? :S
    bu sekilde daha guvenli sezon varmi yokmu kontrol et sezonun degerini degil.
    ve session save olayini bir arastirki paylasimli hosting paketlerinde sezonlarini caldirma.

    sezon korumanın güzel bir yolu token oluşturmaktır

    <?
    
    $_SESSION['token'] =  md5($username.$password.SITEKEY));
    boylece token ile kontrol edersin fonksiyonlarinda sitenin configine bir DEFINE['SITEKEY'] = '234554svsvsdfalanfilan'; gibi siteye ozel hash eklersin bir fonksiyon ile bakarsin token la hash sistemin uyusuyormu diye
    
    ?>
  • 11-04-2010, 21:00:59
    #6
    sezon nedir ? ve verdiğiniz kodu nasıl kullanacağım ? basit bir şekilde gösterebilir misiniz ? Daha şimşekler çakmadı .
  • 11-04-2010, 21:34:21
    #7
    Session siteye giriş yapan kullanıcıyı diğer sayfalarda tanımlaman için

    mesela mysql ile kullanıcı adını aldın giriş yaptırdın
    diğer sayfalarda senin bu kullanıcıyı tanıman için ya session yada çerez kullanman gerekir.

    //sezonlar
    
    session.start();
    
    //ile baslatilir
    $siteanahtar = 'eerji4r44jio34r34iorj';
    function giris ($username,$password) {
    $username = mysql_real_escape_string($username);
    $password = mysql_real_escape_string($password);
    // injectiondan korunmak icin escape yapildi
    
    $q= "select * from users where username = '$username' and password ='$password'";
    $q = mysql_query($q);
    $sonuc_row = mysql_fetch_row($q);
    $sonuc = mysql_num_rows($q);
    
    if ($sonuc == 1)
    
    {
    // db deki 2. sutun users tablosundaki username
    // bilgisayar mantiginda sayilar 0 dan basladigi icin sutun no - 1 olarak alinir
    $_SESSION['username']= $sonuc_row[1];
    
    //db deki 1. sutun  id
    $_SESSION['uid']= $sonuc_row[0];
    $_SESSION['token'] = md5($username.$password.$siteanahtar);
    // 3 tane sezon atadik;
    }
    else {
    
    echo  ' gecersiz kullanici sifre kombinasyonu';
    
    }
    
    $username = 'kapitan';
    $sifre = 'abc';
    // giris fonksiyonumuzu cagiralim
    giris($username,$sifre);
    //boylece kapitan ve abc 2lisi users tablosunda varsa  bize session lari acar.
    
    simdi sessionlar ile nasil kontrol yapilir.
    
    //mesela uyelik bilgileri guncelleme. 
    
    $uye_sql= "select * from users where  id = '$_SESSION[uid]'";
    $uye_sql = mysql_query($uye_sql);
    $uye_sql= mysql_fetch_row($uye_sql);
    
    if ($_SESSION['token'] == md5($uye_sql['1'].$uye_sql[2].$siteanahtar){
    //yukaridak' 1 username 2 password sutunlarini temsil ediyor site anahtarda sitemize ait anahtar
    echo 'uye guncelemeye izin var';
    }
    else {
    
    echo 'size ait olmayan uyeligi guncelleyemezsiniz.';
     }
    üyelik işlemlerinde bu sistemi gönül rahatlığı ile kullanabilirsiniz ama Cross site açıklarına sezonlarınızı nasıl koruyacağınızı php ve apache ile ilgili dökümantasyon sayfalarında bulabilirsiniz.
    başka bişi olursa pm den ulaşabilirsiniz.
  • 12-04-2010, 00:47:20
    #8
    veritabanından üyeleri kontrol edebiliyorum. Sizin verdiğiniz kodlara çok benzer bir sistemi kullanıyorum buraya kadar herşey normal . Siteye özgü bir anahtar atadınız herhangi bir değişkene onu da sessiona kullanıcı şifre ve anahtari birleştirip md5 ile şifrelediniz bunu da sessiona atadınız. Peki bunu nasıl bir yerde kontrol ediyorsunuz ? Bir tek bunu anlayamadım. Ve benimle ilgilendiğiniz zamanınızı harcadıginiz için teşekkür ederim
  • 12-04-2010, 01:51:13
    #9
    mesela.

    userduzenle.php?id=10 diye 10 idli userı düzenleme sayfamız olsun. 
    eğer giriş yapan kişininin id si 10 değilse ona bu hakkı vermeyeceğiz . senaryomuz bu
    $userid= mysql_real_escape_string($_GET['id']);
    $uye_sql= "select * from users where  id = '$userid'";
    //
    $uye_sql = mysql_query($uye_sql);
    $uye_sql= mysql_fetch_row($uye_sql);
    
    if ($_SESSION['token'] == md5($uye_sql['1'].$uye_sql[2].$siteanahtar){
    //yukaridak' 1 username 2 password sutunlarini temsil ediyor site anahtarda
     sitemize ait anahtar
    //simdi kullanıcı girişi yaparken girilen kullanıcı adı ve password u SESSION //token a atamıştık
    
    //kullanıcı adımız: kapitan
    //şifre :abc
    //$_SESSION['token'] = md5('kapitan'.'sifre'.$siteanahtar) olmustu
    // ama 10 idli kullanicinin kullaniciadi kapitan10 sifresi ise abc10
    // boylece $_SESSION['token'] in simdiki degeri //md5('kapitan10'.'abc10'.$siteanahtar) a esit olmadigindan kullaniciya //baskasinin profil ini duzenlemesine olanak vermedik. 
    echo 'uye guncelemeye izin var';
    }
    else {
    
    echo 'size ait olmayan uyeligi guncelleyemezsiniz.';
     }
    veya her kullaniciya bir token atarsin. hem email aktive etmede kullanirsin.
    hemde site ici islemlerde.