带反斜杠的SQL注入

带反斜杠的SQL注入,sql,function,code-injection,backslash,Sql,Function,Code Injection,Backslash,这是示例代码: include("db_connect.php"); // function foo($string){ $s_array = array("'", '"'); $result = str_replace($s_array, "\\", $string); return $result; } // $first_var = $_POST['first_var']; $second_var = intval($_POST['second_var']); //

这是示例代码:

include("db_connect.php");
//
function foo($string){
    $s_array = array("'", '"');
    $result = str_replace($s_array, "\\", $string);
    return $result;
}
//
$first_var = $_POST['first_var'];
$second_var = intval($_POST['second_var']);
//
$first_var_result = foo($first_var);
//
mysql_query("UPDATE some_table SET first_column='".$first_var_result."', second_column='".$second_var."'  WHERE id='id'");
当$\u POST['first\u var']等于“,foo函数用\替换,mysql返回错误。
这不是我的代码。我对这段代码是否易受攻击(SQL注入)很感兴趣?谢谢。

不是这一个,但你很接近。如果
第一个变量\u结果
结尾
,替换的
\
将在SQL查询中转义撇号,
second\u var
将作为代码执行。如果您也要使用
foo
对其进行转义,那么您就有了SQL注入。

mysqli\u escape\u string使用此方法来避免SQL注入看看,这样您就可以编写更安全的代码了。谢谢您的回复。但是我不想避免sql注入。这不是我的代码。我感兴趣的是,这段代码是否易受攻击。我是web开发人员,我知道如何避免SQL注入(mysql\u real\u escape\u string、addslashes、htmlspecialchars或任何自定义函数)。这不是我想要的。“我知道如何避免SQL注入(mysql\u real\u escape\u string、addslashes、htmlspecialchars或任何自定义函数)”–不,显然你不知道。无论是
addslashes
,还是
htmlspecialchars
以及可能的“任何自定义函数”都不适合防止SQL注入。您应该只使用准备好的语句提供的参数化语句!谢谢你的快速回复。但第二个变量仅为INT。现在是,可能不到一年,没有人会注意到此注入。此SQL代码实际上无效,它在
$second\u var
之后错过了
'
。非常感谢您的关注,我已经更新了代码。