zoukankan      html  css  js  c++  java
  • sql注入笔记

    1.什么是sql注入:
          sql注入是将sql代码添加到输入参数中,传递sql服务器解析并执行的一种攻击手法。
    sql参数未经过滤直接拼接到sql语句当中, 解析执行,到达预想之外的效果
    $sql=" select * from  where id=-1 OR 1=1";  //OR 1=1  条件查询整张表的
    2.sql注入是怎么产生的
     web开发人员无法做到所有的输入都已经过滤;
    攻击者利用发送给sql服务器的输入数据,构造可执行的sql代码;
    数据库未做相应安全配置。
    3.寻找sql注入漏洞
      借助逻辑推理:
             识别web应用中的所有输入点:get数据、 post数据,http头信息
            了解哪些类型的请求会触发异常:在get或post提交数据时,添加单引号,多引号
            检测服务器相应中的异常:
    4.如何进行sql注入攻击:
      数字注入:在where条件中添加数字 ,如 select * from  where id=-1 OR 1=1
    字符串注入:在用户名input框输入;admin'# '闭合字符串,#注释后面的密码信息,或者用 -- 代替 都起到注释后面密码信息的作用。
    5.如何预防sql注入
      a.严格检查输入变量的类型和格式;
    //数字校验
    if (empty($id) || !is_numeric($id)) {
        echo 'id不能为空必须为数字';
    }
    //字符校验
    if (empty($name)||preg_match('/^[a-zA-Z0-9]{4,}$/',$name)){
        echo '名字不能为空,字符必须在4个以上的符合条件的字符';
    }
    b.过滤和转义特殊字符:包括单引号,双引号,反斜杠,通过addslashes()转义,
    或者通过mysqli_real_escape_string()效果一样。
    c.利用mysqli的预编译机制
  • 相关阅读:
    51Nod 2006 飞行员配对(二分图最大匹配)-匈牙利算法
    51Nod 1212无向图最小生成树
    51Nod 1081前缀和
    51Nod 1118 机器人走方格--求逆元
    Java四种线程池的使用
    java常用的几种线程池比较
    一名3年工作经验的程序员应该具备的技能(写得很好,果断转)
    《深入理解mybatis原理》 MyBatis的架构设计以及实例分析
    javadoc
    java 反射机制 观点
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15453782.html
Copyright © 2011-2022 走看看