网络应用层安全之SQL注入
注入攻击,就是数据与代码没有分离产生的结果,计算机或服务器把用户输入的数据当做代码执行,其中有两个关键条件:①用户能够控制输入,②代码进行了拼接。
SQL注入是发生在 Web 程序中数据库层的安全漏洞,是网站最常见最简单的漏洞。网站考虑地再详细也会被黑客们抓到漏洞和破绽,SQL注入利用程序对输入数据不会判断和处理进行恶意攻击,使用具有特定意义的SQL 语句执行非法操作。
简言之,SQL 注入就是在用户输入的字符串中加入 SQL 语句,如果程序没有对输入进行处理,那么这些注入进去的 SQL 语句就会被数据库服务器误认为是正常的 SQL 语句而运行,攻击者就可以执行计划外的命令或访问未被授权的数据。
原理
1. 通过服务器返回的错误信息给黑客提供攻击信息
如果网站web服务器开启了错误回显,则会给攻击者提供方便。攻击者在输入中输入不合理的字符,通过返回的错误信息,攻击者可以知道服务器使用的哪种数据库,查询的语句等等信息,有助于构造能攻击该网站的注入攻击语句。
因此在后续的预防中会提到“不要给用户返回错误信息”,但是即使服务器关闭了这个错误回显,攻击者也可以通过“盲注”的方式,即构造简单的条件语句,根据页面是否发生变化来判断注入的SQL语句是否执行。
2. 与原本SQL语句进行拼接,形成新的指令
复习SQL的增删改查
增
// 插入单行数据
select into ... values ...
// 表添加到新表
select into ... select ... from ...
删