美文网首页
SQL注入概论

SQL注入概论

作者: 子卿先生 | 来源:发表于2018-08-27 15:43 被阅读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注入类型

    • 按数据库执行结果是否显示在页面上分类

      1. SQL回显注入(数据库的执行结果直接显示在页面上)
        SQL回显注入可再分为:
        a. union联合查询注入:通过union联合查询数据,回显数据在正常页面
        b. 报错注入:通过报错页面回显数据库的敏感信息
      2. SQL盲注(不显示在页面上)
        SQL盲注有可以分为:
        a. 布尔盲注:通过页面的变化判断注入语句的正确性,猜解数据
        b. 时间注入:通过页面的返回时间猜解数据
    • 按注入点类型来分类

      1. 数学型注入点
        在web端大概是http://www.xxx.com/news.php?id=1 这种形式,其注入点id类型为数字,因此为数字型注入。其SQL语句原型大致为 :select * form 表名 where id=1
      2. 字符型注入点
        在web端大概是http://www.xxx.com/news.php?name=admin,其注入点name为字符类型,因此为字符型注入。其SQL语句原型大致为: select * form 表名 where name='admin'。有时候为双引号:where name="admin"
      3. 搜索型注入点
        这是一类特殊的注入点,主要是因为在数据搜索时没过滤搜索参数,一般在链接地址中存在"keyword=关键字",有的不显示在链接地址里面,而是通过搜索框表单提交。其SQL语句原型大致为:select * from 表名 where 字段 like '%关键字%'
    • 按提交数据的方式和位置来分类

      1. GET注入
        提交数据的方式是GET,注入点的位置在GET参数部分,如http://www.xxx.com/news.php?id=1,id为注入点
      2. POST注入
        使用POST方式提交数据,注入点位置在POST的BODY部分,常发生在表单处
      3. Cookie注入
        HTTP请求的时候header部分的Cookie信息存在注入点
      4. HTTP注入
        注入点在header的其他字段,如User-Agent字段,Cookie注入其实也是HTTP注入的一部分

    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 数据库防火墙


      方案比较

    相关文章

      网友评论

          本文标题:SQL注入概论

          本文链接:https://www.haomeiwen.com/subject/fllziftx.html