2014-10-30 139 views
-1

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

+0

strip_tags将是一个选项 – Gautam3164 2014-10-30 09:25:40

+2

'mysql_real_escape_string'不是为删除JS或PHP代码而设计的......你想要做什么?在放入数据库之前转义数据?或者剥离JS/PHP代码? – Carpetsmoker 2014-10-30 09:26:03

+0

在这里回答:http://stackoverflow.com/questions/1162491/alternative-to-mysql-real-escape-string-without-connecting-to-db – 2014-10-30 09:26:32

回答

4

这不是mysql_real_escape_string做的或做的(功能现在为deprecated)。 mysql_real_escape_string的替代方法是使用预处理语句,例如PDOMySQLi

但是,这与从字符串中剥离Javascript或PHP代码完全无关 - 也;识别'Javascript'或'PHP'可能相对困难。

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

对于Javascript,禁止在输出中使用HTML标签就足够了。看功能为strip_tags,甚至更好,htmlspecialchars。防止PHP执行更容易;只是不要使用方法eval

+0

那么哪个更好?htmlspecialchars或strip_tags? – X10nD 2014-10-30 09:31:44

+0

这取决于你的需求。 strip_tags去除所有标记(HTML和PHP),这会给你留下一个格式不正确的字符串。 html_special_chars使您能够显示用户输入的数据,而无需执行Javascript的风险。 – Sherlock 2014-10-30 09:33:10

+0

所以如果我回声(htmlspecialchars(strip_tags(字符串));它可能只是工作出好? – X10nD 2014-10-30 09:34:15

-1

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

+1

有人可以告诉我,为什么downvotes?他问如何从文本中删除代码,这正是strip_tags所做的。 – 2014-10-30 09:35:09

+0

我没有低调这一点,但我同意他们。 strip_tags删除html标签。它不会删除javascript(除非它在脚本标记中)或php(即使它在php标记中)。 – rjdown 2014-10-30 09:50:12

0

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

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

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

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

0

mysql_real_escape_string用于避免SQL注入攻击 - 人们试图对数据库执行SQL命令。 你仍然需要使用这个 - (或转移到PDO准备语句等)。

mysql_real_escape_string不是用来清理用户输入(例如html,javascript)的方式,这会使您的站点对XSS攻击开放。为此,我会推荐Html Purifier