Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

cookie güvenliğini nasıl sağlarım

Konu, 'PHP' kısmında wotran tarafından paylaşıldı.

  1. wotran

    wotran Üye

    Kayıt:
    22 Nisan 2008
    Mesajlar:
    87
    Beğenilen Mesajlar:
    0
    arkadaşlar şimdi kendi çapımda bir portal yapıyorum ama şöyle sorunum var ben üyelikte cookie kullandım bu yüzden sahte cookie gibi olayları nasıl önlerim bu konuda yardımcı olursanız sevinirim.
     
  2. Sancar Saran

    Sancar Saran Daimi Üye

    Kayıt:
    9 Mart 2007
    Mesajlar:
    2,063
    Beğenilen Mesajlar:
    1
    Meslek:
    Bilgi Islem
    Şehir:
    Izmir
    Cookie datasini encyript/decyript ederek.
     
  3. wotran

    wotran Üye

    Kayıt:
    22 Nisan 2008
    Mesajlar:
    87
    Beğenilen Mesajlar:
    0
    işte onu nasıl yaparım peki bu konuda yardımcı olurmusnuz.
     
  4. teddmcload

    teddmcload Daimi Üye

    Kayıt:
    24 Ocak 2003
    Mesajlar:
    1,650
    Beğenilen Mesajlar:
    0
    md5'le şifreleyebilirsin. veriyi şifrele cooki'ye ata.
     
  5. Raiden

    Raiden self.life.start()

    Kayıt:
    11 Ekim 2004
    Mesajlar:
    4,392
    Beğenilen Mesajlar:
    0
    Şehir:
    /home/Raiden
    sadece encrypt işe yaramaz. cookielere kullanıcıların müdahele etme olasılığını düşünürsek sıkı bir filtrelemeden geçirmeliyiz. hele ki magic_quotes_gpc kapalı olan sunucularda direk sql injcektion açığına yol vermiş olursunuz.

    örnek vermek gerekirse. diyelimki cookiedeki değeri aynen aldık. ve sql sorgumuza dahil edices

    kullanici tablomuz olsun, id username ve pass alanlari olsun.

    cookie de şu şekil de düzenlediğimizi farz edelim.

    PHP:
    uyeadi' OR pass='
    bu şekil düzenlendiğinde bizim normal olan sql cümlemiz
    PHP:
    SELECT FROM user WHERE username='$uye' AND pass='$pass'
    aşağıdaki şekle değişmiş olur
    PHP:
    SELECT FROM user WHERE username='uyeadi' OR pass='
    hal böyle olunca da sql injection işe yaramış olur.

    bir örnek:
    http://yusuf.dizaynnet.com/dnm.php?u=admin'+OR+pass='

    dnm.php:
    PHP:
    <?php
    $db 
    mysql_connect("localhost","root","");
    mysql_select_db("targaf",$db);
    $u $_GET['u'];
    $p $_GET['p'];
    $s mysql_query("SELECT * FROM admin WHERE user='$u' AND pass='$p'");
    echo (
    "SELECT * FROM admin WHERE user='$u' AND pass='$p'");
    $q mysql_fetch_array($s);
    print_r($q);
    ?>
    eğer hiç bir filtreleme yapmassak sonuç bu olur. gelen değerleri sql e dahil ederken mysql_real_escape() addslashes() veya mysql_real_escape_string()
    gibi fonksiyonlardan geçirilmesinin faydası olacaktır.
     
  6. wotran

    wotran Üye

    Kayıt:
    22 Nisan 2008
    Mesajlar:
    87
    Beğenilen Mesajlar:
    0
    1. raiden kardeş dediğinden birşey anlamadım anlattığında ise cookie güvenliğine dayalı birşey bulamadım tamamen şifre çalma mantığını filan anlatmışsın ben ise cookie güvenliğini sormuştum

    ben cookiyeye sadcee giriş yapan üyenin adını kayıtlıyorum ama o isimde admin yertkisi varsa onlarıda göstertiyom hal böyle olunca cookienin düzenlenip sahte isimle yada adminin ismi ile şifre filan girmeden giriş yapamlarını önlemek icin.
     
  7. Raiden

    Raiden self.life.start()

    Kayıt:
    11 Ekim 2004
    Mesajlar:
    4,392
    Beğenilen Mesajlar:
    0
    Şehir:
    /home/Raiden
    wotran pes doğrusu :)

    anlatmak istediğim şey şuydu magic_quotes_gpc kapalı ise serverin de ve cookie den aldığın bilgileri filtrelemeden sokuyorsan adam senin veritabanını da droplar şifrelerini de alır istediği herşey yapar...

    daha açık nasıl bilemiyorum.

    şimdi bu cookie güvenliğine giriyor mu girmiyor mu ? :)
     
  8. wotran

    wotran Üye

    Kayıt:
    22 Nisan 2008
    Mesajlar:
    87
    Beğenilen Mesajlar:
    0
    özür dilerim kafam bi dünya toparlıyamadım soryy
     
  9. Sancar Saran

    Sancar Saran Daimi Üye

    Kayıt:
    9 Mart 2007
    Mesajlar:
    2,063
    Beğenilen Mesajlar:
    1
    Meslek:
    Bilgi Islem
    Şehir:
    Izmir
    Ceviz yoneticilerinden bir istegim olacak, Bu acilan mevzular icin secilen ikonlarin yanina bir de armut ikonu konulsun. Armut pis azima dus modeli cozum isteyen arkadaslar, mevzuyu acarken bu iconu secsin, bizde ona gore bilelim.

    PHP:
        /**
        * initCookie#
        * initits user cookie
        *
        * Variables:
        *
        * @return
        *
        * @author Sancar "Delifisek" Saran <delifisek@delifisek.net>
        * @version 1.0
        */
        
    function initCookie($o) {
            
    $sTempCookies['session_id'] =  md5(uniqid(microtime()) . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);
            
    $aCookies = isset($_COOKIE[$o['cookie_name']]) ? unserialize(dekript(array('data'=>base64_decode($_COOKIE[$o['cookie_name']])))) : $sTempCookies;
            !isset(
    $aCookies['session_id']) ? $aCookies['session_id'] = $sTempCookies['session_id'] : '';
            return 
    $aCookies;
        }


        
    /**
        * sendCookie#
        * sends cooke to user
        *
        * Variables: flex var model
        *
        * @return
        *
        * @author Sancar "Delifisek" Saran <delifisek@delifisek.net>
        * @version 1.0
        */
        
    function sendCookie($o) {
            
    $strCookie '';
            
    $o['cookies']['init_time'] = mktime();
            
    $sCookie base64_encode(kript(array('data'=>serialize($o['cookies']))));
            
    // Fix the domain to accept domains with and without 'www.'.
            
    $domain = ( strtolowersubstr($_SERVER['SERVER_NAME'], 04) ) == 'www.' ) ? substr($_SERVER['SERVER_NAME'], 4) : $_SERVER['SERVER_NAME'];
            
    // Add the dot prefix to ensure compatibility with subdomains
            
    (substr($domain01) != '.' ) ? $domain '.'.$domain '';
            
    // 10 day cookie
            
    setcookie($o['cookie_name'], $sCookie, (time()+(60*60*24*10)), '/',$domain,0);
        }

        
    /**
        * kript#
        * encyript data
        *
        * Variables:  flex var mode
        *
        * @return
        *
        * @author Sancar "Delifisek" Saran <delifisek@delifisek.net>
        * @version 1.0
        */
        
    public static function kript($o) {
            
    $method = !isset($o['method']) ? 'rijndael-256' $o['method'];
            
    $secret = !isset($o['secret']) ? 'antinkuntinislerbunlar' $o['secret'];
            
    $td mcrypt_module_open($method'''ecb''');
            
    $iv mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
            
    mcrypt_generic_init($td$secret$iv);
            
    $encrypted_data mcrypt_generic($td$o['data']);
            
    mcrypt_generic_deinit($td);
            
    mcrypt_module_close($td);
            return 
    $encrypted_data;
        }

        
    /**
        * dekript#
        * decyript data
        *
        * Variables:  flex var mode
        *
        * @return
        *
        * @author Sancar "Delifisek" Saran <delifisek@delifisek.net>
        * @version 1.0
        */
        
    public static function dekript($o) {
            
    $method = !isset($o['method']) ? 'rijndael-256' $o['method'];
            
    $secret = !isset($o['secret']) ? 'antinkuntinislerbunlar' $o['secret'];
            
    $td mcrypt_module_open($method'''ecb''');
            
    $iv mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
            
    mcrypt_generic_init($td$secret$iv);
            
    $encrypted_data mdecrypt_generic($td$o['data']);
            
    mcrypt_generic_deinit($td);
            
    mcrypt_module_close($td);
            return 
    $encrypted_data;
        }

    Yukardaki fonksiyonu kutuphaneniz ekleyin.

    PHP:
    // Include kutuphane falan filan.
    // Hic bir echo islemi yapmadan once
    // $config bir yerde daha inceden yazlimis config dizisi
    initCookie(array('cookie_name'=>$config['cookie_name']));

    // Sayfa ile ilgili tum islemler ve tabiki henuz echo yapilmamis
    // $cookie_data, cookie icinde tutmak istediginiz datanin bulundugu array
    // 

    sendCookie(array('cookie_name'=>$config['cookie_name'],'cookie'=>$cookie_data));
    Bu model session yerinede kullanilabilir. Guvenlik sorunu cikarmaz.

    sendCookie icinde surekli bir bicimde time update yapiliyor, cok guvenlik paranoyaniz varsa bu veriyi ayrica session icine koyup akabindeki requestler ile match ettirebilirsiniz.

    Ha rjindael-256 yi online kiran varsa :p onu bilemem tabi...

    Tabi serverde mcrypt modulunun yuklu olmasi gerekir. Model MD5 e de cevirebilirsiniz.
     
  10. GeCe_

    GeCe_ Aktif Üye

    Kayıt:
    30 Ocak 2006
    Mesajlar:
    436
    Beğenilen Mesajlar:
    0
    Hehe süper fikir :) hazır pişmiş armut, bende ekledim teşekkürler :D