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() 函数添加的反斜杠。(正常情况下这个不需要加)

  • 相关阅读:
    POJ 1953 World Cup Noise
    POJ 1995 Raising Modulo Numbers (快速幂取余)
    poj 1256 Anagram
    POJ 1218 THE DRUNK JAILER
    POJ 1316 Self Numbers
    POJ 1663 Number Steps
    POJ 1664 放苹果
    如何查看DIV被设置什么CSS样式
    独行DIV自适应宽度布局CSS实例与扩大应用范围
    python 从入门到精通教程一:[1]Hello,world!
  • 原文地址:https://www.cnblogs.com/zhaozhilu/p/2944293.html
Copyright © 2011-2022 走看看