0

如果我在所有 MySQL 查询上使用准备好的语句,我还需要使用mysql_real_escape_string()etc 来防止它被 SQL 注入吗?

问题:我让我的代码通过foreach所有$_POST元素和mysql_real_escape_string()每个元素运行。

但是当我开始使用 CKEditor 时它就成了一个问题,textareas因为它会生成插入数据库的 HTML 代码,但是在插入之前,它会通过foreach我之前提到的那个循环,转义 CKEditor 生成的所有引号,使其非在 HTML 页面中显示时有效。

所以也许准备好的陈述是要走的路?

4

1 回答 1

2

如果正确使用准备好的语句,则不需要转义插入的内容,因为您将内容与 SQL 代码分开。

但这不是一种神奇的方法,只是“使用准备好的方法”。您需要确保您的代码实际进入参数。您可以(我不是说您正在这样做,但可以肯定的是)只需准备一个您本来会运行的查询,并且遇到与以前相同的问题。

如果你记得准备好的语句不是一个神奇的“现在它是安全的”按钮,你可以跳过转义码。

于 2012-08-30T08:48:51.320 回答