发生于数据层的安全漏洞,在输入数据字符串中夹带SQL指令,在设计不良的程序中忽略了检查。
主要原因
使用字符串连接方式组合SQL指令
使用权限过大的账户
开放了不必要但权力过大的功能
太过于信任用户所输入的数据,未限制输入的字符数,以及未对用户输入的数据做潜在指令的检查
注入原理
组合SQL命令字符串,未针对单引号字符串做取代处理的话,将导致该字符串变量在填入命令字符串时,被恶意篡改原本的
SQL语法的作用。
危害
使用他人ID登陆系统
到取数据库中非授权数据
恶意删除/修改 数据库/数据表/纪录
修改或更改操作系统
获得系统更高极权限
破坏硬盘数据
防御SQL注入式攻击
完全使用参数化查询
先针对传入参数做字符取代
使用其它更安全的方式连接SQL数据库例如已经修正过SQL注入问题的数据库连接组件。例如ASP.NET的SqlDataSource对
象或是LINQ to SQL
使用SQL防注入系统。