我在绕过过滤器时遇到问题。
function filter($input) {
if(get_magic_quotes_gpc())
$input= stripslashes($input);
$input = mysql_real_escape_string($input);
return $input;
}
所以过滤器使用 stripslashes 和 mysql_real_escape_string 这使得注入变得困难
$id = $_GET['id'];
$id = filter($id);
$query = "select * from users where `id` = '$id' and 1=0 ;"; // for example
$result = mysql_query($query , $connection);
有没有办法绕过它。提前致谢。 👍
绕过 PHP 函数 stripslashes 和 mysql_real_escape_string 组合过滤器的解决方案。
我在网上看到很多文章/帖子讨论这个问题。
对于您的情况,不可能尝试使用您提供的确切代码执行SQL注入(我同意@yourcommonsense的评论)。
但是,许多专家指出,将 stripslashes 与 mysql_real_escape_string 一起使用来防止 SQL 注入攻击是危险的,因为编码人员在添加新代码/修改现有代码时很容易“意外”忘记使用此类过滤器。因此最好使用参数化准备好的语句进行切换
顺便说一句,不要使用 mysql_* 函数,它们已经过时了