这是示例代码:
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'");
当 $_POST['first_var'] 等于 ' 时,foo 函数将 ' 替换为 \,mysql 返回 ERROR。 这不是我的代码。我只是想知道这段代码是否容易受到攻击(SQL 注入)?谢谢。
不是这个,但你们非常接近。如果
first_var_result
以 '
或 "
结尾,则替换的 \
将转义 SQL 查询中的撇号,并且 second_var
将作为代码执行。如果你也用 foo
来转义它,那么你就遇到了 SQL 注入。