【问题标题】:Am I safe?? [trying to prevent sql injection] [duplicate]我安全吗?? [试图防止sql注入] [重复]
【发布时间】:2015-09-05 22:50:50
【问题描述】:

我想知道如果我在脚本中有这个,我是否可以避免 SQL 注入:

< script>

    //some stuff

    var item = <?php echo json_oncode($PHPVAR) ?>

    item.replace(/"/,'&quot').replace(/'/,'&#39');

    //do more script stuff with item

< /script>

目前使用 Laravel (PHP),带有 PDO 还有什么我应该注意/注意的吗? (据我所知,在提交到数据库 b/c PDO 之前,我没有将白名单/黑名单列入白名单/黑名单)

我还要求 b/c 项目取自用户输入,它使用项目的值动态创建 HTML

【问题讨论】:

  • 看起来你在写 JS,而不是 PHP?
  • 这是客户端,所以不是。使用准备好的语句。 json_oncode 也是错字吗?
  • 我几乎需要您的全部代码才能告诉您是否可以安全地避免 sql 注入。通常,将 pdo 与准备好的语句一起使用并且从不将用户输入连接(将字符串添加在一起)到 sql 语句中(即使用参数)将保护您。不过,我不能保证一切。
  • 准备好的语句本身根本不提供任何保护 - 恰好 PDO 中的准备好的语句要求您使用变量绑定,而 就是为您提供保护的原因。你必须使用准备好的语句才能得到这很烦人的、不必要的开销。
  • 这对 SQL 注入是 100% 安全的,因为根本没有数据库代码

标签: php mysql security laravel pdo


【解决方案1】:

对于所提供的资源量,这个问题有些无法回答(至少不会以一种不会给您一种错误的安全感的方式)。

既然你使用的是PDO,我就直接说你应该使用prepared statements。整体上的注入主要取决于 Web 应用程序如何处理用户输入。

您的问题应该是“这条用户输入如何与我的应用程序交互?” -- 当然,为了保护自己免受 (B)SQLi(或其他注入变体 [XSS/LDAP])的影响,并没有一套要做的事情列表。

以下是一些很好的资源,可以帮助您进一步了解整个 SQL 注入(如果您希望能够涵盖某些内容,您需要了解该漏洞的一般工作原理具体)。

OWASP SQL Injection

Acunetix SQL Injection

SQL Injection Cheat Sheet

除了可能更深入地了解如何处理与您提供的代码有关的用户输入(我们可能会但我认为不是必需的)之外,没有更多可以专门回答您的问题。

【讨论】:

  • 我认为你给我的sql注入链接和准备好的语句是我需要的东西。我之前做过一些sql注入,但我只是害怕我可能错过了什么
  • @mark4284 - 没关系,如果您需要更多,您可以在我添加的 Acunetix SQL 注入链接中获得更多参考。 OWASP 也适用于 Web 漏洞。
猜你喜欢
  • 2013-08-31
  • 2010-10-12
  • 2012-08-04
  • 2022-01-18
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
  • 2019-05-23
  • 1970-01-01
相关资源
最近更新 更多