zoukankan      html  css  js  c++  java
  • 关于sql注入

    SQL注入漏洞成因在于Web应用程序对用户提交CGI参数数据未做充分检查过滤。用户提交的数据可能会被用来构造访问后台数据库的SQL指令,如果这些数据过滤不严格就有可能被插入恶意的SQL代码,从而非授权操作后台的数据库,导致从敏感信息泄露、破坏数据库内容和结构、甚至利用数据库本身的扩展功能控制服务器操作系统。利用SQL注入漏洞可以构成对Web服务器的直接攻击,还可能利用服务器攻击第三方的浏览网站的其他用户。

    例如:

    $sql = "select * from user where name='".$_POST['name']."' and password='".$_POST['password']."'"; 

    正常情况下为:

    select * from user where name='admin' and password='admin'

    注入情况下:

    select * from user where name='admin'//' and password='123'

    name传来的值为:admin'//

    我们现在项目中用的是mysql的  mysql_real_eacape_string()函数过滤传来的参数

    其他来源:

    <?php
    class BaseGeneral {

    public
    static function Escape($string, $force = 0, $htmlspecialchars) { $htmlspecialchars && $string = self::EscapeToHtml($string); if(!get_magic_quotes_gpc() || $force) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = self::Escape($val, $force); } } else if(is_object($string)) { foreach($string as $key => $val) { $string[$key] = self::Escape($val, $force); } } else { $string = addslashes($string); } } return $string; } public static function EscapeToHtml($string) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = self::EscapeToHtml($val); } } else if (is_object($string)) { foreach($string as $key => $val) { $string->$key = self::EscapeToHtml($val); } } else { $string = htmlspecialchars($string, ENT_QUOTES, 'GB2312'); } return $string; }
    }
    ?>
    //调用
    BaseGeneral::Escape($string,$force=0,true);

    先对传入的参数进行取值(直到是字符串为止),然后进行单引和双引的转实体操作,再判断magic_quotes_gpc是否为on

     注释:默认情况下,PHP 指令 magic_quotes_gpc 为 on,对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

    addslashes() 函数在指定的预定义字符前添加反斜杠。

    这些预定义字符是:

    • 单引号 (')
    • 双引号 (")
    • 反斜杠 (\)
    • NULL

    stripcslashes() 函数删除由 addcslashes() 函数添加的反斜杠。(正常情况下这个不需要加)

  • 相关阅读:
    Oracle Convert DateTime to String
    Javascript Regular Expression 日期
    AIX disk usage command
    Truncate a number to a certain number of decimal places
    Start Oracle Sqlplus with Login Information Script
    10)drf 过滤器(条件查询 排序 ) 分页器
    10.windows权限维持
    11.msf和cs补充
    12.linux提权
    4.内网信息收集(补充)
  • 原文地址:https://www.cnblogs.com/zhaozhilu/p/2944293.html
Copyright © 2011-2022 走看看