Discuz模板|Discuz插件|Discuz教程|Discuz素材免费下载

 找回密码
 立即注册

QQ登录

只需一步,快速开始

温馨提示:本站所有DZ相关模板、插件、教程(包括DZ应用中心已下架插件、模板)所有用户可全部免费下载,无任何收费模式(不包括VIP版块非DZ资源,VIP版块需购买会员组方可下载),如本站没有您需要的插件或模板,请自行前往淘宝互站网送码网等第三方站点搜索相关插件或模板进行低价格购买下载本站非常不建议用户浪费金钱前往DZ应用中心购买。

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

[复制链接]
tuyuanma 发表于 2021-8-2 19:56:27 | 显示全部楼层 |阅读模式
温馨提醒:禁止内容附带广告图片、二维码图片,否则将在不通知情况下永久禁言账号!
欢迎加入兔源码站长交流群,您的加入是我们前行的动力!

DZ站长建站交流群:493651246

[ 温馨提示:点击上方群文字,可快速加入QQ群 ]


一、为什么会出现这个问题?
这是因为开启了主页/帖子页文件缓存,然后搜索表单的 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

版权声明
1、转摘或引用本站内容资源须注明原网址,并标明本站网址(兔源码www.tuyuanma.com);
2、对于转摘或引用本站内容资源而引起的民事纠纷、行政处罚或其他损失,本站不承担责任;
3、对于不遵守本声明或其他违法、恶意使用本站内容者,本站保留其追究法律责任的权利。




自动排版 | 高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

493651246站长邮箱:tuyuanma@qq.com 站长QQ:3197813386

© 2001-2013 本站内容皆来自互联网及用户分享,如需删除请提供软著或商标证书。

快速回复 返回顶部 返回列表