• 19-06-2009, 12:35:34
    #1
    Üyeliği durduruldu
    Merhaba arkadaşlar,


    Ben PHP'ye yeni başladım ve şu url güvenliğini bir türlü başaramadım.

    Linkim bu;
    <a href="detay.php?ID=<?=$verim["id"];?>"?>
    bu linkte nasıl url güvenliğini uygulayabilirim?



    Yardımcı olursanız sevinirim. Basitleştirilmiş şekilde anlatırsanız çok makbule geçer.


    Şimdiden teşekkürler.
  • 19-06-2009, 12:44:51
    #2
    İlla linkleri böyle vereceksin diye birşey yok, get ile verileri alırken bir güvenlik fonksiyonu yapabilirsin, örneğin;
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
    {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
    $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
    switch ($theType) {
    case "text":
    $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
    break;
    case "long":
    case "int":
    $theValue = ($theValue != "") ? intval($theValue) : "NULL";
    break;
    case "double":
    $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
    break;
    case "date":
    $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
    break;
    case "defined":
    $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
    break;
    }
    return $theValue;
    }
    }
    Yukarıdaki fonksiyon kulanışı da şöyle;
    $_GET['ID'] yerine, GetSQLValueString($_GET['ID'], "text").
  • 19-06-2009, 13:46:35
    #3
    Üyeliği durduruldu
    Ben bu tür olaylara pek yabancıyım . URL için bunu yapma yolu yokmudur ?
  • 19-06-2009, 14:19:23
    #4
    işin mantığını kısaca anlatacak olursak;
    mesela
    haber.php?id=11
    bu url diyelim. sen haber.php'de GET ile gelen id yi mysql sorgusunda kullanacaksin.

    $sql = mysql_query("SELECT * FROM haberler WHERE id='$_GET['id']'");
    şeklinde kullanabilirsin. fakat burada güvenlik açığı oluşur. kişi haber.php?id= den sonra 11 yerine istedigi mysql satirlarini yazarak senin sorgunun içinde kendide sorgu dönderebilir. bunun önleme için basit yollar izlenebilir.
    1- GET ile gelen ID lerin sadece sayi olmasini saglariz.
    örnek ;
    is_numeric
    if (!is_numeric($_GET['id'])) { //is_numeric ile getten gelen id yi kontrol ettik eğer id numara degil ise 
    echo "Güvenlik"; //ekrana güvenlik yazdik.
    exit; //işlemleri sonlandırdık.
    }
    2- Eğer GET ile sadece sayılar degilde baska şeylerde geliyor ise
    burada addslashes yada mysql_real_escape_string kullanabiliriz.

    $id = mysql_real_escape_string($id);
    ya da
    $id = addslashes($id);
    gibi bu işlemlerden sonraki mysql sorgularimizda $_GET['id'] degilde $id değişkenini kullaniriz.

    Bunlar en basitleride PHP güvenlik konusunda internetten binlerce kaynak bulunabilir.
  • 19-06-2009, 14:39:24
    #5
    edit:2 kere yollanmiş..