Discuz!x3.1升级20131122后出现“您当前的访问请求当中含有非法字符“解决方法

2014年09月10日 技术资料 3891 views 0

故障描述:升级最新的x3.1版本((20131122)后,退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。

包括登录后使用搜索正常但是退出登录后使用搜索出现以下错误!

Discuz!x3.1升级20131122后出现“您当前的访问请求当中含有非法字符“解决方法 第1张 



解决方案如下:

\source\class\discuz的discuz_application.php
查找

  1. private function _xss_check() {


  2.                 static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');


  3.                 if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {

  4.                         system_error('request_tainting');

  5.                 }


  6.                 if($_SERVER['REQUEST_METHOD'] == 'GET' ) {

  7.                         $temp = $_SERVER['REQUEST_URI'];

  8.                 } elseif(empty ($_GET['formhash'])) {

  9.                         $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');

  10.                 } else {

  11.                         $temp = '';

  12.                 }


  13.                 if(!empty($temp)) {

  14.                         $temp = strtoupper(urldecode(urldecode($temp)));

  15.                         foreach ($check as $str) {

  16.                                 if(strpos($temp, $str) !== false) {

  17.                                         system_error('request_tainting');

  18.                                 }

  19.                         }

  20.                 }


  21.                 return true;

  22.         }


替换为

  1. private function _xss_check() {

  2.                 $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));

  3.                 if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {

  4.                         system_error('request_tainting');

  5.                 }

  6.                 return true;

  7.         }


👍好活当赏🧧