[Web 安全]SQL 注入

SQL 注入

漏洞原理

黑客通过构造包含恶意 SQL 语句的输入,而 Web 应用未对用户输入进行合法性校验,从而导致这些恶意代码被数据库正确执行所导致。

漏洞危害

敏感信息泄露、网站入侵等。

注入方式

  1. 显错注入
  2. 布尔注入
  3. 联合注入
  4. 延时注入
  5. 带外注入
  6. 宽字节注入
  7. 堆叠注入

防御方案

  1. 过滤
    对所有输入进行合法性校验,过滤最基本的两个方法:黑名单、白名单。
  2. 转义
    PHP mysqli_real_escape_string 函数或 Java MyBatis 的 # 号包裹等,但可能会被编码绕过。
  3. 预编译
    预编译是 SQL 注入最好的防御方法,但不一定使用了预编译就能够彻底杜绝 SQL 注入漏洞,错误预编译时机同样可能存在 SQL 注入漏洞。
    原因:预编译是指提前构造好 SQL 语句模板,用占位符接收输入的数据。SQL 注入只对编译过程有破坏作用,执行阶段只是把输入串作为数据处理,不需要再对输入串中的 SQL 语句进行解析,因此解决了注入问题。
  4. 严格控制SQL权限
    最小权限原则。
  5. 禁止回显报错
    增加攻击者注入难度,但还是能通过带外或盲注的方式进行利用。
  6. 密文存储数据
    止损措施。

绕过手段

  1. 过滤绕过
    编码、大小写混写、双写、空格、换行、制表符、空字节、内联注释等。
  2. 转义绕过
    宽字节等。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值