忘记密码?

一键登录

草根吧源码论坛

教你如何解决 Discuz system error 非法字符问题

查看: 1400|回复: 0

教你如何解决 Discuz system error 非法字符问题

[复制链接]

24

主题

904

热度

55

贡献

步入草根

Rank: 1

活跃会员热心会员灌水之王

发表于 2014-6-13 17:25:33 | 显示全部楼层 |阅读模式 | 百度  360  谷歌 
分享到:
本帖最后由 轮回的宿命 于 2014-6-13 17:28 编辑

最近很多人遇到 Discuz system error  您当前访问请求中含有非法字符,已经被系统拒绝
所以分享一个收集来的解决方法,按下列方法修改,记得备份原文件在进行修改。更新缓存。


打开文件:

source\class\discuz\discuz_application.php

查找:
private function _xss_check() {

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

if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
system_error('request_tainting');
}

if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
$temp = $_SERVER['REQUEST_URI'];
} elseif(empty ($_GET['formhash'])) {
$temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
} else {
$temp = '';
}

if(!empty($temp)) {
$temp = strtoupper(urldecode(urldecode($temp)));
foreach ($check as $str) {
if(strpos($temp, $str) !== false) {
system_error('request_tainting');
}
}
}

return true;
}


替换成:
private function _xss_check() {
$temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
system_error('request_tainting');
}
return true;
}

帖子地址: 

回复

举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆 用百度帐号登录 一键登录:

本版积分规则

收藏帖子 返回列表 搜索
快速回复 返回顶部 返回列表