垃圾站 Discuz3.2游客搜索提示:您当前的访问请求当中含有非法字符,已经被系统拒绝

Discuz3.2游客搜索提示:您当前的访问请求当中含有非法字符,已经被系统拒绝

错误描述:Discuz3.2在未登录时(游客)搜索提示如下错误:“您当前的访问请求当中含有非法字符,已经被系统拒绝”,当管理员在后台更新缓存后游客再次搜索则正常出现搜索内容,但过一段时间后游客如果搜索又会出现如上错误。

提示信息:PHP:search.php:0022 -> source/class/discuz/discuz_application.php:0071 -> source/class/discuz/discuz_application.php:0552 -> source/class/discuz/discuz_application.php:0355 -> source/function/function_core.php:0023 -> source/class/discuz/discuz_error.php:0024

您当前的访问请求当中含有非法字符,已经被系统拒绝

产生原因:由于Discuz!X 的Xss安全机制,会对游客访问时进行字符内容安全检查,特别是游客使用搜索功能时,搜索容易出现 "您当前访问请求中含有非法字符,已经被系统拒绝" 。

解决办法:将错误提示直接跳转用户登录页面。

打开:/source/class/discuz/discuz_application.php

搜索下面代码:

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

替换为:

if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
                        //system_error('request_tainting');
                          //header('HTTP/1.1 301 Moved Permanently');
                          header("Location: http://".$_SERVER['HTTP_HOST']."/member.php?mod=logging&action=login");
                          exit;
                }

如果网站部署了SSL,将上述代码中的http修改为https即可。

上一篇
下一篇
联系我们

联系我们

返回顶部