概念
SQL攻击
简称注入攻击,是发生于应用程序之数据库层的安全漏洞。简而言之,是在输入的字符串之中注入
SQL
指令,在设计不良的
程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的
SQL
指令而运行,此因遭到破坏或是入侵。
原因
在应用程序中若有下列状况,则可能应用程序正暴露在SQLInjection的高风险情况下:
1. 在应用程序中使用字符串联结方式组合SQL指令。
2. 在应用程序链接数据库时使用权限过大的账户(例如很多开发人员都喜欢用sa(内置的最高权限的系统管理员账户)连接Microsoft SQL Server数据库)。
3. 在数据库中开放了不必要但权力过大的功能(例如在MicrosoftSQL Server数据库中的xp_cmdshell延伸预存程序或是OLE Automation预存程序等)
4. 太过于信任用户所输入的数据,未限制输入的字符数,以及未对用户输入的数据做潜在指令的检查。
作用原理
1. SQL命令可查询、插入、更新、删除等,命令的串接。而以分号字符为不同命令的区别。(原本的作用是用于SubQuery或作为查询、插入、更新、删除……等的条件式)
2. SQL命令对于传入的字符串参数是用单引号字符所包起来。《但连续2个单引号字元,在SQL资料库中,则视为字串中的一个单引号字元》
3. SQL命令中,可以注入注解《连续