gpt4 book ai didi

PHP SQL 卫生 VS 准备好的语句

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:06:21 26 4
gpt4 key购买 nike

快一点。

我正在将一个使用 mysql 的旧 Web 应用程序迁移到 mysqli。我曾经使用我编写的自定义清理功能来防止 SQL 注入(inject):

    function sani($text=""){
if (!is_array($text)) {
$text = str_replace("<", "&lt;", $text);
$text = str_replace(">", "&gt;", $text);
$text = str_replace("\"", "&quot;", $text);
$text = str_replace("'", "&#039;", $text);
return $text;
}
}

我以前是这样用的:

mysql_query("SELECT * FROM `table` WHERE `username` = '" . $sani($userinput) . "'");

基本上它所做的就是更改可用于注入(inject) html 编码的符号。到目前为止它运行良好,但自从我迁移到 mysqli 后,我想知道准备好的语句是否比此函数更安全。

此外,我已经阅读了很多有关准备语句和未准备语句之间的速度差异的信息,它真的那么明显吗?我每秒执行大约一百个查询,所以我怀疑我会受到很大影响吗?

谢谢!

最佳答案

是的,准备好的语句肯定比这个函数更安全,而且它们还有一个额外的好处,即当您从数据库中取回数据时也不必解码数据。顺便说一下,即使对于旧的 mysql 库,您也确实应该依赖 mysql_real_escape_string 而不是您自定义的卫生功能:)

准备好的语句比未准备的语句快得多,在典型的使用情况下,即使您“只是”每秒执行 100 次查询,您也会从中受益。

关于PHP SQL 卫生 VS 准备好的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10804740/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com