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

来自版块 Discuz教程
1209
0
温馨提示:如下载链接失效,请前往 问题反馈专用帖 进行反馈! 兔源码交流群:493651246
错误描述: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
搜索下面代码:
  1. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
  2.                         system_error('request_tainting');
  3.                 }
复制代码
替换为:
  1. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
  2.                         //system_error('request_tainting');
  3.                           //header('HTTP/1.1 301 Moved Permanently');
  4.                           header("Location: http://".$_SERVER['HTTP_HOST']."/member.php?mod=logging&action=login");
  5.                           exit;
  6.                 }
复制代码
如果网站部署了SSL,将上述代码中的http修改为https即可。

全部评论 0

您需要登录后才可以回帖 立即登录
输入你要评论的内容......
0
0
0
返回顶部