SQL注入漏洞

是一种将SQL代码插入或添加到应用(用户)的输入参数中的攻击,之后再讲这些参数传递给后台的SQL服务器加以解析并执行。由于SQL语句本身多样性,以及用于构造的SQL语句编码方法很多,因此凡是构造SQL语句没有过滤的均存在被潜在攻击的风险。

其本质是对于输入检查不充分,导致将SQL语句将用户提交的非法数据当做语句的一部分来执行

两个条件
用户能够控制输入
程序代码拼接了用户的输入

数据泄露、数据丢失、数据篡改
绕过认证、验证,绕过登录等功能
服务器进一步被入侵
数据、功能的损坏

任何客户端可控,带有参数传递到服务器的变量都可能触发SQL注入
GET;
POST;
头部注入;
COOKIE注入;
搜索注入;
User-Agent;
X-Forward-For

采用参数化查询的方法(推荐)
参数化查询强制开发者先定义所有的SQL语句,然后向每个查询传递参数。
严格限定参数类型
明确参数检验的边界,必须在服务端执行数据验证
内置过滤系统(本质是黑名单,很常见但是不推荐)

最小权限原则
拒绝用户访问敏感的系统存储过程
限制用户所能够访问的数据库表

随机文章