• 28-12-2014, 07:29:35
    #1
    Misafir
    Günümüz teknolojisinde internet sektöründe en çok kullanılan programlama türlerinden biri olan "php" kodlamaları yaparken "sitenizde güvenlik açığı" oluşturmamasını sağlıyan ve bunlara dikkat etmeniz için 5 farklı önemli tavsiyem aşağıdadır.


    Panellerinizde, veya yaptığınız sayfa işlemlerimde kullandığınız header() fonksiyonunu sayfanızda yaptığınız işleme göre aşağıdaki şekilde kodlayın.

    Benim veya bir çok programcı arkadaşın yaptığı en önemli hatalardan biri yönetim paneli kodlarken. exit() komutunu çoğu zaman unutuyoruz.
    Eğer böyle yaparsak sonrasında belirtmiş olduğunuz işlemler iptal olacaktır.

    Eğer yapmazsanız örnek olarak yönetici sayfanıza erişim sağlanabilir, yönetici paneliniz görüntülenebilir.
    header("Location: gidileceksayfa");
    exit();
    Dışardan almış olduğunuz GET - POST verilerini güvenli hala getirin.

    $degisken = $_POST["degisken"];
    $guvenlisqldegisken = mysql_real_escape_string($degisken); // Örnektir, Veritabanını girilecek veriyi ilk adımda güvenli hale getirme.
    
    Tamamını tek kod kütüphanesi ile orta derece güvenli hale getirmek için;
    
    	while (list($poskey, $posval) = each($_POST))
    		{
    			if (is_array($_POST[$poskey]))
    			{
    				foreach($_POST[$poskey] as $aydi=>$value)
    				{
    					$_POST[$poskey][$aydi] = mysql_real_escape_string($value);
    				}
    			}else{
    				$_POST[$poskey] = mysql_real_escape_string($posval);
    			}
    		}
    			while (list($poskey, $posval) = each($_GET))
    		{
    			if (is_array($_GET[$poskey]))
    			{
    				foreach($_GET[$poskey] as $aydi=>$value)
    				{
    					$_GET[$poskey][$aydi] = mysql_real_escape_string($value);
    				}
    			}else{
    				$_GET[$poskey] = mysql_real_escape_string($posval);
    			}
    		}
    Sisteminizde yaptığınız dışarıdan dosya yani file alışverişini güvenli hale getirin.
    Örnek:

    $degisken = $_FILES["ek"]["name"];
    $uzanti = end(explode($degisken,"."));
    if(strstr($uzanti,"php"))
    {
    	echo "Güvenlik tehlikesi olan dosya alışverişi";
    }
    else
    {
    	echo "Güvenlik tehlikesi olmayan dosya alışverişi";
    }
    Sisteminize gönderilen "Form POST-GET" veya "REQUEST" işlemlerinde gelen bilgiyi doğruladıkdan ve izin verdikten sonra işlemlerin yapılmasına izin verin.
    Örnek: ( Basitleştirilmiş )
    Güvenlik Karakteri Kontrolü ( Spama karşı )

    <?php
    ob_start();
    session_start();
    $randgk = rand(0,10000);
    $_SESSION["gk"] = "$randgk";
    ?>
    <form action="" name="adi" method="post">
    <b><?php echo $randgk; ?>"</b>
    <br>
    <input type="text" name="isimsoyisim" value="isminizi yazın"><br>
    <input type="text" name="gk" value="Gördüğünüz güvenlik kodunu girin">
    </form>
    <?php
    if($_POST["gk"]==$_SESSION["gk"])
    {
     echo "Güvenlik verisi doğru";
    }
    else
    {
     echo "Güvenlik verisi yanlış.";	
    }
    ?>
    Sisteminizin veritabanında kayıtta tuttuğunuz şifreleri gerçek halleri ile değil "md5" veya başka bir şifreleme türü kullanarak kaydedin. Bunların şuanda en güvenlisi veya yaygını md5tir.

    <?php
    $sifre = "mesut";
    $md5lenmis = md5($sifre);
    echo $md5lenmis;
    ?>
    • Onurss
    Onurss bunu beğendi.
    1 kişi bunu beğendi.
  • 28-12-2014, 09:02:56
    #2
    Eklenen dosyayi uzantisi ile sorgulamak ne kadar dogru tartisilir.

    Her cesit dosyanin sorgulama mantigi vardir.

    Resim eklerken guvenli oldugunu mu dusunuyorsunuz?

    Ornegin resimin width ve height degerlerini cektirirsin sifirdan buyuk mu degil mi veya integer mi kontrol ettirirsin.

    Paylasim icin tesekkurler


    Sent from my iPhone using Tapatalk
  • 28-12-2014, 09:38:55
    #3
    Misafir
    Yukarı verdiğim örnekleri zaten düz mantık üzerinden açıkladım geliştirebilmesi kullanacak kişiye kalmış üstad.
  • 28-12-2014, 09:50:18
    #4
    ByMsT adlı üyeden alıntı: mesajı görüntüle
    $degisken = $_FILES["ek"]["name"];
    $uzanti = end(explode($degisken,"."));
    if(strstr($uzanti,"php")
    {
    echo "Güvenlik tehlikesi olan dosya alışverişi";
    }
    else
    {
    echo "Güvenlik tehlikesi olmayan dosya alışverişi";
    }
    [/PHP]
    Yalnız exploiti komut çağrıcı veya shell kodunu bu kısımdan dosya adını php dosyasını .jpg olarak değiştirip yüklenmez mi? uzantı değilde dosya yapısı kontrol olması gerekmez mi? Bu şekilde yaptığınızda LFI açığına sebebiyet verirsiniz gibime geliyor daha sonrada dosya.php.jpg dosayı dosya.php.jpg%00 tarzı çağrım noktaları ile doğrudan veya exploit le kod çağrımı olur yanlış mıyım?
  • 28-12-2014, 16:15:35
    #5
    Misafir
    WTF adlı üyeden alıntı: mesajı görüntüle
    Yalnız exploiti komut çağrıcı veya shell kodunu bu kısımdan dosya adını php dosyasını .jpg olarak değiştirip yüklenmez mi? uzantı değilde dosya yapısı kontrol olması gerekmez mi? Bu şekilde yaptığınızda LFI açığına sebebiyet verirsiniz gibime geliyor daha sonrada dosya.php.jpg dosayı dosya.php.jpg%00 tarzı çağrım noktaları ile doğrudan veya exploit le kod çağrımı olur yanlış mıyım?

    Tabiki sadece uzantıya göre dosya denetlemesi yapılması mantıklı değil. Ben sadece düz mantık örnekleme açısından verdim.

    Yoksa dileyen arkadaşlar file type, file byte ( dosya türü, dosya boyutu ) gibi bilgilerle gönderilen dosyayı denetliyebilirler.
    • WTF
    WTF bunu beğendi.
    1 kişi bunu beğendi.