如果我在所有的MySQL查询上都使用了预准备语句,我还需要使用mysql_real_escape_string()等来防止它被注入吗?
问题:我让我的代码通过foreach所有的$_POST元素和每个元素上的mysql_real_escape_string()运行。
但当我开始在textareas上使用CKEditor时,这就成了一个问题,因为它会生成插入到数据库中的HTML代码,但在插入代码之前,它会经过我前面提到的foreach循环,转义CKEditor生成的所有引号,使其在显示在HTML页面时不起作用。
那么,也许准备好的语句是可行的呢?
发布于 2012-08-30 16:48:51
如果正确使用了预准备语句,就不需要转义要插入的内容,因为可以将内容从SQL代码中分离出来。
但这不是一种神奇的方法,只是“使用已准备好的方法”。你需要确保你的代码真的进入了参数。您可以(我不是说您正在做这件事,但可以肯定的是)只需要准备一个查询,否则您将运行该查询,并且具有与过去相同的问题。
如果您记得预准备语句不是一个神奇的“现在是安全的”按钮,那么您可以跳过转义代码。
https://stackoverflow.com/questions/12193063
复制相似问题