SQL注入概论

2018-08-27  本文已影响0人  子卿先生

什么是SQL?

结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统

什么是SQL注入?

SQL注入一种代码注入技术,用于攻击基于数据库的应用,基本原理是将SQL语句插入到参数位置,后台将该参数与SQL语句拼接后对数据库进行操作而导致的漏洞


SQL注入流程
  1. web服务器将表格发送给用户
  2. 攻击者将带有SQL注入特征的参数发送给web服务器(user=" " ;pass=" ' or 1=1 -- ")
  3. web服务器利用用户输入的数据构建SQL串(select * from user where user=' ' and pass='' or 1=1-- ')
  4. web服务器将SQL发送给数据库服务器
  5. 数据库服务器执行被注入的SQL,返回结果给服务器
  6. web服务器将数据返回给用户

SQL注入类型

SQL注入的主流防御方法

  1. 代码层防御方法
    1.1 严格检查用户输入的数据类型
    1.2 限制用户输入长度
    1.3 对敏感字符进行转义,如单引号,双引号
    1.4 对特殊字符进行过滤,如(select;union;and;or)
    1.5 参数化语句,使用占位符或绑定变量向SQL查询提供参数
    1.6 数据库控制,如使用权限有限用户连接数据库;机密数据加密后存入数据库
    1.7 错误返回统一化:应用报错时,使用统一页面返回,并尽可能给出少的提升
  2. 平台层防御方法
    2.1 web应用防火墙(WAF)
    2.2 数据库防火墙


    方案比较
上一篇 下一篇

猜你喜欢

热点阅读