易受攻击的代码与安全代码之间的差

时间:2015-11-07 07:20:38

标签: php sql

我发了这两篇帖子来改进我的代码,但有人可以向我解释this php vulnerable codethis secure code之间的区别。 我知道第一个是不安全的,可以接受SQL注入而另一个没有,但为什么这种类型的编码很强?

1 个答案:

答案 0 :(得分:1)

您的问题似乎是:

问:为什么参数化查询比“原始”查询更不容易受到攻击?

请阅读:

https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet

坦率地说,对于对“安全编码”感兴趣的任何人,它应该是强制阅读

  

主要防御防御选项1:准备好的语句(带参数化查询)

     

使用带有变量绑定的预准备语句(又名   参数化查询)是所有开发人员应该首先被教授的方式   如何编写数据库查询。它们易于编写且更易于编写   理解比动态查询。参数化查询强制执行   开发人员首先定义所有SQL代码,然后传入每个代码   稍后查询的参数。这种编码风格允许数据库   区分代码和数据,无论用户输入是什么   提供。

     

准备好的声明可确保攻击者无法更改   查询的意图,即使攻击者插入了SQL命令。   在下面的安全示例中,如果攻击者要输入的userID   tom'或'1'='1,参数化查询不会易受攻击   而是寻找一个字面上匹配整个用户名的用户名   string tom'或'1'='1。

这只是您应该注意的许多与SQL相关的问题之一。 OWASP文章列出了其他文章,并链接到许多其他重要主题。