当使用mysqli_real_escape_string? [重复](When to use m

2019-09-20 04:44发布

可能重复:
最好的防止PHP SQL注入方式

我想知道有关SQL注入,想知道何时使用mysqli_real_escape_string。

我需要每一个我在查询的WHERE子句时使用它呢?

Answer 1:

您应该使用mysqli_real_escape_string为来自用户或不能被信任的任何数据。



Answer 2:

你必须使用它时,你有$ _REQUEST“瓦尔”在查询中如。

 $query = "UPDATE foo set bar = '{$_GET['var']}' ..."

 $query = "INSERT INTO foo ('{$_POST['var']}',) ..."

 $query = "SELECT bla from foo WHERE bar = '{$_COOKIE['var']}'"

每本querys必须mysqli_real_escape_string提供注射...



Answer 3:

您可以使用mysqli_real_escape_string或它的任何变化,以确保数据形成任何用户输入字段正确转义。

例如,你有几个输入的形式。 你点击提交和数据被作为你的PHP脚本的请求。 在你的脚本插入到一个数据库中的值用户发布。

如果用户键入的以下成用户登录例如输入域:

' WHERE `username` = {x} AND password > 1;

有潜力的那个人都从你正在使用的表中的数据。 使用:

mysqli_real_escape_string($input)

将产生上述为:

\' WHERE `username` = {x} AND password > 1;

在“将停止一个可能的SQL注入从工作攻击的转义字符串。

这就是说有你应该使用无理由mysqli_real_escape_string()为PDO和绑定参数是在偏转不同的SQL攻击/注射方法主机远远优于。 了解它,使用它!

编辑因意见

%_也需要超越特殊处理mysqli_real_escape_string()

function escape_extra_chars ( $string )
{
    $string = preg_replace("/\%/", "\%", $string);
    $string = preg_replace("/\_/", "\_", $string);

    return $string;
}

沿着反正那些行(即FUNC是未经测试)



文章来源: When to use mysqli_real_escape_string? [duplicate]
标签: php mysqli