zoukankan      html  css  js  c++  java
  • sql 注入问题

    1.

    关于使用intval强制转换成数字的问题。数字大于2147483647会出现溢出出现负数。使用个方法来替代这个吧
    $n=" ";
    $a=2147483648.05555;
    echo intval($a).$n; //result -2147483648
    echo (int) $a,$n;//result -2147483648
    echo floatval($a).$n;//result 2147483648.0556
    echo floor(floatval($a)).$n;//result 2147483648

    大于等于11位数的要用floatval(13714482984)

    2.htmlspecialchars,strip_tags,stripslashes 这些可以过滤字符串

    3.

    $uid = isset($_GET['uid']) ? $_GET['uid'] : 0;
    $uid = addslashes(uid);
    $sql = "SELECT uid,username FROM user WHERE uid='{$uid}'";     // 安全性更高
    $uid = isset($_GET['uid']) ? $_GET['uid'] : 0;
    $uid = addslashes(uid);
    $sql = "SELECT uid,username FROM user WHERE uid={$uid}";      //安全性低

    带有引号的话,sql想注入,黑客必须要先想办法闭合'' (引号),增加黑客难度

    addslashes  会把库号进行转义

    最佳解决办法是用intval,int,floatval

    4.正则过滤字符(字符超长处理)

    如:http://localhost/dailian/index.php?g=service&m=order&a=index&order_sn=201611022150472413';545a

    $f = preg_replace('/(d+).*/','\1',$order_sn);

    输出:201611022150472413

  • 相关阅读:
    每天一个linux命令:head(15)
    用设计模式来替代if-else
    每天一个linux命令:less(14)
    每天一个linux命令:more(13)
    每天一个linux命令:nl(12)
    CDN是什么鬼
    ajax跨域问题
    PDO和MySQLi区别与选择?
    php 依赖注入 和 控制反转 php设计模式
    理解 PHP 依赖注入
  • 原文地址:https://www.cnblogs.com/wesky/p/6070688.html
Copyright © 2011-2022 走看看