thinkphp漏洞|ThinkPHP出现自动转义解决办法总结

更新时间:2018-04-26    来源:thinkphp    手机版     字体:

【www.bbyears.com--thinkphp】

这种情况是在 php.ini中的magic_quotes_gpc 开启的情况下发生的。原因是thinkphp在入库的时候没有判断 magic_quotes_gpc 是否开启,直接进行了转义处理。

我的解决办法:在baseAction中自动执行

 代码如下

public function _initialize()
      {
          //去除转义 不用系统的自动转义
          if (get_magic_quotes_gpc()) {
            $this->mystrip(&$_POST);
            $this->mystrip(&$_GET);
        }
      //去除转义方法
      public function mystrip($data){
          if (is_array($data)){
              foreach ($data as &$v){
                  $this->mystrip(&$v);
              }
          }else{
              $data = stripslashes($data);
          }
      }

或者在接收数据的时候处理

 代码如下

$data["content"] = stripslashes(htmlspecialchars_decode($_POST["content"]))

主要使用php中stripslashes函数

 

别人解决办法:是在入口文件增加如下代码则可:(没试过自己试试吧)

 代码如下

if (!get_magic_quotes_gpc()) {
    function addslashes_deep($value) {
        $value = is_array($value) ?
            array_map("addslashes_deep", $value) :
            addslashes($value);
        return $value;
   }
   $_POST = array_map("addslashes_deep", $_POST);
   $_GET = array_map("addslashes_deep", $_GET);
   $_COOKIE = array_map("addslashes_deep", $_COOKIE);
   $_REQUEST = array_map("addslashes_deep", $_REQUEST);
}

本文来源:http://www.bbyears.com/jiaocheng/40954.html