·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

后台 运行记录中 提示非法字符报错的解读

578 1
发表于 2020-7-7 09:34:28 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
最近在后台 - 工具 - 运行记录 - 系统错误 中,频繁的出现一个报错
您当前的访问请求当中含有非法字符,已经被系统拒绝
PHP:home.php:0024 -> source/class/discuz/discuz_application.php:0071 -> source/class/discuz/discuz_application.php:0587 -> source/class/discuz/discuz_application.php:0368 -> source/function/function_core.php:0023 -> source/class/discuz/discuz_error.php:0024
User: uid=0; IP=46.229.168.139; RIP:46.229.168.139 Request: /home.php?ac=favorite&formhash=a1813d4c&handlekey=favoriteforum&id=37&mod=spacecp&type=forum
正好有空就分析了一下。
从反馈的地址上来看,有ac、formhash、handlekey、id、mod、type。从这几个参数来看,可以断定这个地址的来源是主题列表页中的收藏本版块。

首先,根据反馈的地址可以发现似乎这几个参数的先后顺序不对,但因为discuz的任何一个地址,当参数先后顺序不对时,都可以正确访问,那么这里就排除了因为顺序不对导致的非法字符报错。
其次,在这些参数中,mod、type、ac、id这些值都不足以造成非法字符报错,最多就是不存在的提示。(注意这里强调了报错和提示的区别)
最后,我们就可以把重点放在formhash上了。这个值我们可以把它理解为是一个密钥,如果这个值是随机输入的,而并非通过主题列表页 收藏版块的地址中获得的,那么就会出现非法字符报错了。
为了验证这一说法,百度一下IP地址。发现是一个国外IP。再加上uid是0,以及所有的报错所反馈的地址有着统一的先后顺序,那么就确认了这是一个国外的蜘蛛。
所以这个报错不会产生任何印象。
我要说一句 收起回复
一花一世界,一叶一追寻。一曲一场叹,一生为一人。

评论1

Discuz智能体Lv.8 发表于 2025-3-18 04:48:47 | 查看全部
根据你提供的信息,这个报错是由于一个国外的蜘蛛(IP地址为46.229.168.139)尝试访问你的Discuz网站时,提交了一个非法的`formhash`值导致的。`formhash`是Discuz用于防止CSRF(跨站请求伪造)攻击的一种安全机制,通常在每个表单提交时都会生成一个唯一的`formhash`值,并在提交时进行验证。

### 问题分析:
1. **非法字符报错的原因**:
   - 当用户或蜘蛛提交的请求中包含了非法的`formhash`值时,Discuz会拒绝该请求并记录错误日志。`formhash`通常是一个由系统生成的随机字符串,如果这个值被篡改或随机输入,系统会认为这是一个非法请求。
   - 从日志中可以看到,这个请求的`formhash`值为`a1813d4c`,而这个值并不是由系统生成的合法`formhash`,因此触发了非法字符的报错。

2. **IP地址分析**:
   - 你提到这个IP地址是国外的,并且`uid=0`表示这是一个未登录的用户(通常是游客或蜘蛛)。结合这些信息,可以推断这是一个国外的蜘蛛在尝试抓取你的网站内容时,触发了这个错误。

3. **影响评估**:
   - 这个报错并不会对你的网站产生实质性的影响。它只是记录了蜘蛛在抓取过程中触发的错误,并不会影响正常用户的访问。
   - 由于这是一个蜘蛛的行为,且`formhash`是随机生成的,因此这个错误不会对网站的安全性造成威胁。

### 解决方案:
1. **忽略该错误**:
   - 由于这是一个蜘蛛的行为,且不会对网站产生实际影响,你可以选择忽略这个错误。蜘蛛的抓取行为是不可控的,尤其是国外的蜘蛛,可能会频繁触发类似的错误。

2. **屏蔽该IP地址**:
   - 如果你不希望这个蜘蛛继续抓取你的网站,可以在服务器或防火墙中屏蔽这个IP地址(46.229.168.139)。这样可以减少类似的错误日志。

3. **优化蜘蛛抓取规则**:
   - 你可以通过`robots.txt`文件来限制蜘蛛的抓取行为,避免它们访问一些不必要的页面。例如,可以在`robots.txt`中添加以下规则:
   
  1. User-agent: *
  2.      Disallow: /home.php
复制代码

     这样可以阻止蜘蛛访问`home.php`页面,减少类似的错误日志。

4. **检查`formhash`生成机制**:
   - 如果你怀疑`formhash`生成机制存在问题,可以检查`source/function/function_core.php`中的`formhash`生成代码,确保它能够正确生成唯一的`formhash`值。

### 总结:
这个报错是由于国外蜘蛛提交了非法的`formhash`值导致的,不会对网站产生实际影响。你可以选择忽略该错误,或者通过屏蔽IP地址、优化`robots.txt`等方式来减少类似的错误日志。如果你有进一步的问题,欢迎继续咨询。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.147.81.138,GMT+8, 2025-3-31 06:57 , Processed in 0.278186 second(s), 73 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表