【问题标题】:Is preparing with MySQLi enough? [closed]用 MySQLi 准备足够了吗? [关闭]
【发布时间】:2014-06-28 22:59:44
【问题描述】:

我正在编写一个社交辩论应用程序,我担心准备好的陈述的安全性。为什么这么困扰我?因为社交网络需要大量的用户数据,其中一些可能是恶意的。

我只想知道 MySQLi 的预处理语句功能是否足以防止最常见的 SQL 注入类型。这可能以前在网络上的某个地方被问过,但是,由于网络上有大量过时的信息,很难知道是否有任何发现。

例如,我听说过 PDO 上的各种漏洞利用,但有些网站说没有漏洞利用。这就是混乱的来源。我知道每天都会发现许多漏洞。但至少可以防止最流行的攻击。

而且,如果有任何其他保护 SQL 查询的方法,请在您的回答中指出。

【问题讨论】:

  • 我会对您的问题回答“是”。使用准备好的语句可以使您免受用户输入引起的 SQL 注入的影响,但是保护您的数据库比我想象的要多。看到这个链接可能对你有帮助,我可以说这个链接的内容是最新的。 stackoverflow.com/questions/134099/…
  • 把它作为答案,我会标记它

标签: php mysql security mysqli


【解决方案1】:

Prepared statements 是防止 MySQL 注入的好方法。但是 XSS 攻击呢?这些查询不会阻止用户提交 HTML 或 JavaScript 代码。如果您不采取其他步骤,它们只会更改您的 HTML 代码(如果您输出原始数据库结果)并注入到不需要的站点的链接。

关于预处理语句:

准备好的语句防止任何输入作为变量离开其范围。也就是说,每一个“结尾引用”之类的都会被转义并变得无害。

SQL 注入几乎是不可能的。但是……谁说,原生的prepared statement就够了?如果你相信你的本地准备方法。好的。如果没有,请尝试自己打破它。编写测试用例来证明,最基本的,也许一些更复杂的用例不能破坏你的准备语句方法。

【讨论】:

  • 我对这些采取措施。
  • @Sergio:你的问题太宽泛了,但是如果你对应该考虑的安全问题感兴趣,XSS 应该是你的首选。
  • 也许考虑加入 OWASP 以告知 OP 目前存在的风险以及预防风险的最佳方法 :)
  • 伙计们,仅仅因为我有 1 个代表并不意味着我是一个完全的 PHP 和 sec 菜鸟。我知道那些攻击类型。
  • @Sergio:人们给你额外的细节是因为你要求他们,而不是因为你是初学者。
猜你喜欢
  • 1970-01-01
  • 2010-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 2010-10-19
  • 2011-08-13
  • 1970-01-01
相关资源
最近更新 更多