【实测】Discuz 游客搜索出现 您当前访问请求中含有非法字符 ...-Discuz教程下载

【实测】Discuz 游客搜索出现 您当前访问请求中含有非法字符 ...

开通本站Svip会员,全站资源免费下
一、为什么会出现这个问题?
这是因为开启了主页/帖子页文件缓存,然后搜索表单的 formhash 也会被缓存,就会导致后面的游客 formhash 与当前不一致。
由于 Discuz! X 的 Xss 安全机制,会对搜索内容进行安全检查,如果 formhash 不一样,就会出现 "您当前访问请求中含有非法字符",已被系统拒绝" 。
二、如何解决?
解决方案:将这个提示改为跳转到 search.php 如果你启用了游客搜索,就会跳转到 search.php 页面,没有没有开启游客搜索,就会提示登陆。
打开/source/class/discuz/discuz_application.php
查找
  1. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash())
复制代码
修改成如下:
  1.        if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
  2.             if(CURSCRIPT == search && !$_G['uid']){ //判断是否是游客 是否是搜索页
  3.             header("Location: https://".$_SERVER['HTTP_HOST']."/search.php"); // 302 跳转到 search.php
  4.             }
  5.             else{
  6.             system_error('request_tainting');
  7.             }
  8.         }
复制代码
修改后如图:
微信截图_20210802195545.png

全部评论 0

您需要登录后才可以回帖 立即登录
登录
0
0
0
返回顶部