[mysql_real_escape_string转换为mysqli

问题描述 投票:0回答:3

好吧,我想知道如何将这个mysql代码转换为mysqli。

function protect($string) {
return mysql_real_escape_string(strip_tags(addslashes($string)));
}

我知道您将mysql更改为mysqli,但是它要求2个与mysql一起使用的参数,所以我希望在mysqli中看到它

而且我还没有在stackoverflow上找到有人对新的mysqli版本有疑问,所以我无法发现自己​​

php mysql mysqli sql-injection
3个回答
0
投票

此功能是个坏主意。

在所有传入数据上不加选择地使用strip_tags()addslashes()会不必要地破坏它,并添加零安全性。

  • 要将数据输入数据库,请仅使用字符串转义功能real_escape_string().

  • 要在HTML页面上显示来自用户的数据,请剥离标签then或使用real_escape_string()以避免任何脚本攻击。


0
投票

尝试这样:

htmlspecialchars()

编辑

$mysqli = new mysqli("host", "username", "pword", "db");

function protect($string) {

    return $mysqli->real_escape_string(strip_tags(addslashes($string)));

    }

0
投票

最好完全不使用它!

$link = mysqli_connect("localhost", "root", "", "aaa"); $city = "'s Hertogenbosch"; $city = mysqli_real_escape_string($link, $city); echo($city); 是一种用于防止SQL注入的hack,它甚至没有做到100%。此功能从未打算保护任何东西。这是一个简单的字符串格式化功能。

mysql_real_escape_string()是使过渡更加容易的另一招。尽管在撰写本文时,mysqli_real_escape_string()已被弃用了很长时间,但没有人可以借口使用某种填充程序进行过渡,因为每个人都应该已经在使用带有准备好的语句甚至更好的PDO的MySQLi。

对于mysql_*strip_tags(),它们在这种情况下是无用的,只会破坏您的数据。不要使用它们。

为了防止SQL注入,应该使用准备好的语句并确保没有任何变量输入直接插入SQL。

例如:

addslashes()
© www.soinside.com 2019 - 2024. All rights reserved.