简介
SQL 注入(SQL Injection)是发生在 Web 程序中数据库层的安全漏洞,是网站存在最多也是最简单的漏洞。主要原因是程序对用户输入数据的合法性没有判断和处理,导致攻击者可以在 Web 应用程序中事先定义好的 SQL 语句中添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步获取到数据信息。
原理
- 参数用户可控
- 参数被带入数据库执行
漏洞危害
- 数据库信息泄露
- 网页篡改
- 网站挂马
注入类型
数字型、字符型、布尔盲注、时间注入、报错注入、宽字节注入、二次注入、堆叠注入
防御措施
1、对用户进行分级管理,严格控制用户的权限;
2、在书写SQL语言时,禁止将变量直接写入到SQL语句,必须通过设置相应的参数来传递相关的变量;
3、在具体检查输入或提交的变量时,对于单引号、双引号、冒号等字符进行转换或者过滤;
4、使用安全参数;
5、通过专业的扫描工具,可以及时的扫描到系统存在的相应漏洞;
6、多层验证;
7、数据库信息加密。