Sorunuzun cevabı () () Tüm SQL enjeksiyon durmuyor tüm kullanıcı girişi ve mysql_real_escape_string için uygun değildir sayılı mysql_real_escape_string olduğunu. addslashes () php kullanmak için popüler bir fonksiyonu olduğunu ve aynı sorun var.
savunmasız kodu:
mysql_query("select * from user where id=".mysql_real_escape_string($_GET[id]));
poc istismar:
http://localhost/sql_test.php?id=1 or sleep(500)
Yama kimliği etrafında tırnak işaretleri kullanmak için:
mysql_query("select * from user where id='".mysql_real_escape_string($_GET[id])."'");
Gerçekten iyi yaklaşım insanların bir dizi işaret olmayacaklarını parametrized sorguları kullanmaktır. PDO iyi çalışıyor, adodb php için popüler bir kütüphanedir.
Eğer kullanırsanız mysql_real_escape_string sadece sql enjeksiyon için kullanılmalıdır, ve başka bir şey. Güvenlik açıkları verileri nasıl kullanıldığını son derece bağlıdır. Bir fonksiyon bazında bir fonksiyonu güvenlik önlemleri uygulamak gerekir. Ve evet, XSS bir VERY SERIOUS PROBLEM olduğunu. Html için filtreleme değil bir hacker sizi pw3n için kullanacağı ciddi bir hatadır. xss faq okuyunuz.