sayfa.php?id=1 adresinde sql injection önlemek için sayfa içinde alınan id'yi $id=htmlspecialchars($id); şeklinde almak yeterli midir ? Yeterli değilse başka neler yapmak gerekir ?
$id = mysql_real_escape_string($_GET['id']);
mysql_real_escape_string'in ne farkı var?
is_numeric kullanman daha mantıklı
if($id == (int) $id) {
islem yap...
} else {
islem yapma...
}
Neyden ne farki var?
Lutfen soru sorarken sizin o anda dusunduklerinizin, bizim o anda dusunduklerimiz ile ayni olamayacagini gozonunde bulundurarak sorularinizi detayli yaziniz.
mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a.
is_numeric yerine int cast ediniz.
PHP:if($id == (int) $id) { islem yap... } else { islem yapma... }
if ( !is_numeric($_GET[id])) {
echo "İşlem yapılamaz";
exit();
}
function sanitize () {
foreach ($_POST as $key => $value) {
$_POST[$key] = mysql_real_escape_string($value);
}
foreach ($_GET as $key => $value) {
$_GET[$key] = mysql_real_escape_string($value);
}
return 1;
}
is_numeric ile int arasındaki fark nedir? hız açısından mı?
PHP:if ( !is_numeric($_GET[id])) { echo "İşlem yapılamaz"; exit(); }
$id=intval($_GET['id']);
id değerini her zaman için tam sayı olarak alır.
echo intval(4.2); // 4
echo intval(042); // 34
echo intval('042'); // 42
echo intval(1e10); // 1410065408
echo intval('1e10'); // 1
echo intval(0x1A); // 26
echo intval(420000000000000000000); // 0
echo intval('420000000000000000000'); // 2147483647
if($id == (int) $id) {
islem yap...
} else {
islem yapma...
}
farkeden ne oldu ? senin başta yaptığın kontrolü ben sql de yaptırıyorum.Sonucta güvenlimi değilmi ?intval da kullanmayin.
Bakin intval ile girilen degerler nasil baska bir deger olabiliyor
PHP:echo intval(4.2); // 4 echo intval(042); // 34 echo intval('042'); // 42 echo intval(1e10); // 1410065408 echo intval('1e10'); // 1 echo intval(0x1A); // 26 echo intval(420000000000000000000); // 0 echo intval('420000000000000000000'); // 2147483647