替代PHP的mysql_real_escape_string

时间:2014-10-30 09:24:00

标签: javascript php sql-injection

是否有替代PHP的mysql_real_escape_string。我想删除在文本框中输入的任何javascript或php代码。

4 个答案:

答案 0 :(得分:5)

这不是mysql_real_escape_string做或做的(函数现在是deprecated)。 mysql_real_escape_string的替代方法是使用预准备语句,例如使用PDOMySQLi

然而,这与从字符串中剥离Javascript或PHP代码完全无关 - 也是;识别“Javascript”或“PHP”可能比较困难。

这里真正的问题是;你为什么要脱掉它?危险不在于保存数据,危险在于显示数据。您永远不应该执行用户输入的代码,无论是Javascript还是PHP。

对于Javascript,禁止输出中的HTML标记就足够了。将功能视为strip_tags,甚至更好,htmlspecialchars。防止PHP执行变得更加容易;只需使用方法eval

答案 1 :(得分:0)

mysql_real_escape_string是一个函数,可确保您的字符串被正确转义以进入数据库。进入数据库的内容正是您的开始。

删除或更改字符串的任何内容都不能替代mysql_real_escape_string。换句话说,它会改变字符串,而不是逃避它。

如果您想更改要存储的字符串,可以通过strip_tagspreg_replace运行。

但是(如果它适合您的情况),请在显示之前考虑从db检索后通过htmlspeciachars运行字符串。

答案 2 :(得分:0)

mysql_real_escape_string用于避免SQL注入攻击 - 人们尝试对数据库执行SQL命令。 您仍然需要使用此 - (或转移到PDO预处理语句等)。

mysql_real_escape_string并不是一种清理用户输入(例如html,javascript)的方法,这会使您的网站对XSS攻击开放。为此,我建议Html Purifier

答案 3 :(得分:-1)

您可以使用strip_tags() - 它会删除所有html标记,包括javascripts。