• 原理篇——sql注入1:基础


    一、sql注入简介

      SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

    二、常见的sql注入分类

      1.按参数类型分类

        ·数字型注入:输入参数为整型时,如id、年龄和页码等。这一类的sql语句原型大概为select * from 表名 where id=1。

        ·字符型注入:输入参数为字符型时,如姓名、职业等;这一类的sql语句原型大概为where name='admin'。需要注意的是这里的引号有时也可能为双引号

      2.按回显类型分类

        ·sql回显注入

         SQL回显注入又可以分为:

           a.union联合查询注入

           b.报错注入

        ·sql盲注

           a.布尔盲注

           b.时间注入

      3.按提交方式分类

        ·GET注入:注入字符在URL参数中;

        ·POST注入:注入字段在POST提交的数据中;

        ·cookie注入:注入字段在Cookie数据中,网站使用通用的防注入程序,会对GET、POST提交的数据进行过滤,却往往遗漏Cookie中的数据进行过滤。

        ·HTTP头部注入:HTTP请求的其他内容触发的SQL注入漏洞;

    三、SQL注入的危害 

       1. 从数据库中读取敏感数据;

      2. 篡改数据库数据;

      3. 对数据库执行管理权限操作;

      4. 执行系统命令导致程序危害发生;

    四、预防措施  

      1. 使用预编译。

      2. 对进入数据库的特殊字符(’”尖括号&*;等)进行转义处理,或编码转换。

      3. 严格限制变量类型,比如整型变量就采用intval()函数过滤,数据库中的存储字段必须对应为 int 型。

      4. 数据长度应该严格规定,能在一定程度上防止比较长的 SQL 注入语句无法正确执行。(前后端同时限制)

      5. 网站每个数据层的编码统一,建议全部使用 UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。(UTF-7 / 宽字节注入 )

      6. 严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。(最小权限原则)

      7. 避免网站显示 SQL错误信息,统一返回错误页面,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。

  • 相关阅读:
    2005年春晚冯巩和朱军那个以《艺术人生》为蓝本的小品,冯巩念的诗
    《十一种孤独》札记
    《OpenCV3编程入门》 札记
    JavaScript对浏览器的URL进行编码、解码
    Jquery对Cookie的操作
    asp.net对cookie的操作
    asp.net时间 日期(DateTime) 的格式处理
    asp.net的JSON数据进行序列化和反序列化
    jQuery自动分页打印表格(HTMLtable),可以强制换页
    asp.net将内容导出到Excel,Table表格数据(html)导出EXCEL
  • 原文地址:https://www.cnblogs.com/guoqingsentou/p/13485200.html
Copyright © 2020-2023  润新知