0

我正在为我的朋友建立一个简洁的网站,我注意到该网站自动转义了来自文本框、文本区域等的输入。

这是否意味着当我想在我的 mysql 数据库中插入数据时我不必添加mysql_real_escape_string,我可以保持原样?

或者这是一个潜在的安全风险?

4

2 回答 2

1

正如评论者所指出的,mysql() api 不是首选。使用 MySQLi - 并使用准备好的语句。这样做的好处是——无论你插入什么——它都不能改变原始的 SQL(在程序员不知情的情况下改变 SQL 是真正的安全问题)。

此外,在所有帖子上转义输入通常会很烦人。我通常通过禁用php.ini 中的 gpc_magic_quotes 指令或在 gpc_magic_quotes 开启时使用 stripslashes 来关闭它。但是,这是我个人的喜好。

因此,请尝试将代码升级为 MySQLi 语法。如果绝对不可能,请使用 stripslashes 然后使用 mysql_real_escape_string (这将考虑到您使用的语言编码......)

于 2013-06-15T23:54:23.517 回答
1

转义发生在哪里并不重要,无论是在发布表单时,还是在对数据库进行实际查询时。mysql_*功能正在被弃用,不应再运行。

如果您想要整洁、安全的网站。学习使用mysql_ii表示“改进”)或更好的数据库不可知接口,称为 PDO 接口。两者都将为您提供所需的整洁,并提高安全性。

您可以在此处获取 PDO 教程

和这里的 Mysqli

于 2013-06-15T23:54:46.033 回答