如果我在所有MySQL查询中使用预准备语句,我是否还需要使用mysql_real_escape_string()
等来阻止它进行SQL注入?
问题:我通过foreach
所有$_POST
个元素和mysql_real_escape_string()
每个元素运行我的代码。
但是当我开始在textareas
上使用CKEditor时它就成了一个问题,因为它生成了插入数据库的HTML代码,但在插入之前,它会通过我提到的foreach
循环以前,转义CKEditor生成的所有引号,使其在HTML页面中显示时不起作用。
所以也许准备好的陈述是要走的路?
答案 0 :(得分:2)
如果正确使用预准备语句,则无需转义要插入的内容,因为您要将内容与SQL代码分开。
但它不是一种神奇的方法,只是“使用准备好的方法”。您需要确保您的代码实际进入参数。你可以(我不是说你这样做,但可以肯定)只是准备一个你本来可以运行的查询,并且遇到过你曾经遇到过的相同问题。
如果你还记得预备语句不是一个神奇的“现在它是安全的”按钮,你可以跳过转义代码。