【问题标题】:PHP/MySQL: Is prepared statements the solution for this?PHP/MySQL:准备好的语句是解决这个问题的方法吗?
【发布时间】:2012-08-30 16:48:51
【问题描述】:

如果我对所有 MySQL 查询都使用准备好的语句,是否还需要使用mysql_real_escape_string() 等来防止它被 SQL 注入?

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

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

所以也许准备好的语句是要走的路?

【问题讨论】:

  • 使用prepared statements时,不用担心sql注入。它会自己照顾它

标签: php mysql pdo


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2019-01-31
    • 2014-06-30
    • 2015-03-22
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 1970-01-01
    • 2019-05-30
    相关资源
    最近更新 更多