📜  PHP | mysqli_real_escape_string()函数(1)

📅  最后修改于: 2023-12-03 15:03:39.199000             🧑  作者: Mango

PHP | mysqli_real_escape_string()函数

在 PHP 中,通过使用 mysqli_real_escape_string() 函数可以避免在 SQL 语句中出现潜在的 SQL 注入攻击。

什么是 SQL 注入攻击?

SQL 注入攻击是通过在动态 SQL 查询语言中注入恶意代码的一种攻击方式。攻击者可以通过在表单输入框、URL 参数等输入窗口中输入恶意内容,从而篡改反馈的数据、窃取敏感数据或者干脆直接操作数据库,造成极大的安全问题。

以下是一个 SQL 注入攻击的案例:

$username = $_POST['username'];
$password = $_POST['password'];

$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = mysqli_query($conn, $sql);

如果用户在输入 username 时输入了如下内容:' OR 1=1 --,那么最终的 SQL 语句就会变成:

SELECT * FROM users WHERE username='' OR 1=1 --' AND password=''

这样,攻击者就可以通过这种方式直接绕过登录验证。

使用 mysqli_real_escape_string() 函数进行防范

为了防止 SQL 注入攻击,我们需要对用户输入的特殊字符进行转义,可以使用 PHP 中的 mysqli_real_escape_string() 函数。

$username = mysqli_real_escape_string($conn, $_POST['username']);
$password = mysqli_real_escape_string($conn, $_POST['password']);

$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = mysqli_query($conn, $sql);

上面的代码中,通过使用 mysqli_real_escape_string() 函数将输入的 $username$password 中的特殊字符进行转义,如 ' 被转义为 \',从而避免了 SQL 注入攻击。

总结一下,使用 mysqli_real_escape_string() 函数可以有效避免在 SQL 语句中出现潜在的 SQL 注入攻击,从而提高程序的安全性。