• 为什么PHP 5.4.0 开始移除magic quotes


    附:在理解了 PHP官网 上相应的资料后,自己总结理解如下,欢迎大家赐教。

    (1)使用magic quotes 影响了PHP的可移植性。加入代码依赖于这一配置,当移植到不支持(或未开启)magic quotes的服务器时,可能无法有效防止SQL注入。PS:可以在代码中使用 get_magic_quotes_gpc() 来检查其是否开启。

    (2)性能方面。并非每一份数据都要存储到数据库中,在运行时用其他转义函数(如addslashes())效率会更好。

    (3)使用起来麻烦。并非每一份数据都需要转义,如,从表单中获取的email地址,会被添加一些‘\’,为了解决这个问题,会引入额外的 stripslashes() 。

     

    下面介绍一种防SQL注入的改进方法:

    //判断是否开启magic_quotes;
    if (!@get_magic_quotes_gpc()) {
        $_GET = sec($_GET);
        $_POST = sec($_POST);
        $_COOKIE = sec($_COOKIE);
    }
            
    function sec(&$array){
            //如果是数组,遍历数组,递归调用
        if (is_array($array)) {
            foreach ($array as $key => $value){
            $array[$key] = sec($value);
                    }
        }elseif (is_string($array)){
                    //使用addslashes函数来处理
            $array = addslashes($array);
        }elseif (is_numeric($array)){
                   //使用intval来处理数字;
            $array = intval($array);
        }
        return $array;
    }                                        
  • 相关阅读:
    Linux I2C核心、总线和设备驱动
    移植 Linux 内核
    同步、互斥、阻塞
    异步通知
    poll机制
    Linux异常处理体系结构
    字符设备的驱动
    进程间的通信—套接字(socket)
    进程间的通信—信号量
    Spring事件的应用
  • 原文地址:https://www.cnblogs.com/scutwang/p/3101434.html
Copyright © 2020-2023  润新知