【问题标题】:Preventing SQL injections in 20122012 年防止 SQL 注入
【发布时间】:2012-05-16 10:40:04
【问题描述】:

我已经很好地阅读了这个问题mysqli or PDO - what are the pros and cons?。但我认为它有点过时了。准备好的语句仍然是对抗注入的最佳解决方案吗?

我将创建一个新的 php 接口来访问我的 mysql 数据库,所以我想从一开始就做好它。

pdo 不会大大降低您的查询速度吗?

【问题讨论】:

  • 过时了?刚刚回答了一些问题。您认为这应该是一个积极研究的领域吗?
  • 不,但也许自从创建主题以来,可能已经找到了更有效的替代方案

标签: php mysql pdo sql-injection


【解决方案1】:

使用准备好的语句/参数化查询。这是完全安全的,因为您不会将 SQL 与同一字符串中的数据混合在一起,并且您不必再考虑转义。至少如果您不开始以用户可以修改的方式使列/表名称动态化。

您通过使用 PDO 获得的优势绝对值得我们将性能损失降到最低。

【讨论】:

  • 然而,值得记住的是,默认情况下,PDO“准备好的语句”根本不是真正的准备好的语句。他们被模仿了。需要拨打PDO::setAttribute(PDO::ATTR_EMULATE_PREPARES, false)才能使用实物。
  • 我认为保留默认值是安全的。然后,如果可用,则使用本地程序,如果没有,则使用模拟程序。
  • 我的理解是默认值是true,它从不使用natives:因此RDBMS仍然会评估SQL的参数——一个只剩下PDO逃跑以确保安全。
  • 呃,那将是非常迟钝的......但由于它是 PHP,我猜一切都是可能的。
猜你喜欢
  • 2011-06-12
  • 1970-01-01
  • 2018-03-23
  • 1970-01-01
  • 2019-06-22
  • 2013-08-31
  • 2019-06-03
  • 2015-09-07
相关资源
最近更新 更多