好的,这里有很多不同的字符串转义函数,比如htmlentities()、mysql_real_escape_string()、addslashes()
但是在什么情况下我应该使用哪一个呢?
请提供资源和意见:)
发布于 2011-04-24 22:17:10
在什么情况下应该使用哪种
?
htmlspecialchars()。用于打印不可信用户输入的browser.发布于 2011-04-24 22:07:16
在将数据插入mysql数据库时,请使用以下命令:
mysql_real_escape_string()当你要显示用户给你的内容时:
htmlentities()如果你的数据库在php中没有自己的函数,你可以使用:addslashes(),但是当你有更好的东西(mysql_real_escape_string())时,不推荐使用。
有关更多信息,请参阅以下内容:
Htmlentities vs addslashes vs mysqli_real_escape_string
附注:您应该使用mysqli_real_escape_string(),而不是mysql_real_escape_string()。
编辑:
为了真正防止攻击,这是一个很好的阅读材料:http://www.php.net/manual/en/security.database.sql-injection.php...
您还应该查看准备好的语句:http://www.php.net/manual/en/mysqli.prepare.php
在堆栈溢出上也可以找到很多信息。
发布于 2011-04-24 22:06:42
它们都是同一主题的变体:
$bar = "O'Reilly";
"foo = '$bar'"; // foo = 'O'Reilly' -> invalid syntax如果字符串应该遵循特定的语法,那么盲目地将字符串连接在一起可能会导致违反语法。往好了说,这是一个恼人的问题,往坏了说,这是一个安全问题。转义值可以避免这些问题。通用示例:
"foo = '" . escape($bar) . "'"; // foo = 'O\'Reilly'所有不同的函数都为不同的语法正确转义值:
用于转义HTML输出的htmlentities。
用于转义SQL查询的值的mysql_real_escape_string。
addslashes…对任何事情都没有好处,不要使用。
用于编码/转义/转换Javascript格式的值的json_encode。
https://stackoverflow.com/questions/5770912
复制相似问题