DISCUZ! X3.2 - 后台 » 工具 » 运行记录 » 系统错误
之前遇到这个问题不是在后台显示,而是直接页面加载错误时显示,今天观察运行记录,并修改,目前未发现修改后引发其他错误的迹象,如有问题以后回来补充,解决方法如下[注意做好备份]:
本方法参考的: Discuz!官网: 运行记录系统错误不间断报错是怎么回事啊!
\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;
- }
复制代码
---------------------------------------------------------------------------------------------------------------
补充:以上按官方修改几分钟后出现新的错误提示:
此处错误提示中User: uid=1,说明是管理员遇到的错误,其他会员也许也会遇到吧。测试的解决如下方法,如有问题再回来补充:
找到上方代码中的system_error('request_tainting');注释掉:
- // system_error('request_tainting');
复制代码 最终如下:
- <blockquote> private function _xss_check() {
复制代码
这句代码之前有注释过,当时遇到的问题与本例类似,见:Discuz游客首页搜索错误:您当前的访问请求当中含有非法字符
|