Discuz搜索报错

Discuz! System Error

Time: 2022-02-16 04:45:55 +0000 IP: 113.72.211.179 BackTraceID: 066b5104fb973d1ded8a4b2809ff27f4

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

PHP Debug

Line: 0022search.php(discuz_application->init)

Line: 0072source/class/discuz/discuz_application.php(discuz_application->_init_misc)

Line: 0600source/class/discuz/discuz_application.php(discuz_application->_xss_check)

Line: 0373source/class/discuz/discuz_application.php(system_error)

Line: 0023source/function/function_core.php(discuz_error::system_error)

Line: 0024source/class/discuz/discuz_error.php(discuz_error::debug_backtrace)

解决方法

source/class/discuz/discuz_application.php

步骤 1:定位并替换 _xss_check() 函数

搜索下面的代码

复制代码
static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');

在代码下面新增(直接复制以下代码)

复制代码
    // 新增:放行 search.php 的搜索请求(核心修复)
	if(CURSCRIPT === 'search' || basename($_SERVER['SCRIPT_NAME']) === 'search.php') {
		// 仅拦截明显的XSS攻击字符,放行正常搜索关键词
		$danger_pattern = '/<script|javascript:|onload=|onclick=|eval\(|alert\(|document\.cookie|vbscript:/i';
		$request_str = '';
		
		if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
			$request_str = $_SERVER['REQUEST_URI'];
		} elseif(empty ($_GET['formhash'])) {
			$request_str = $_SERVER['REQUEST_URI'].http_build_query($_POST);
		}
		
		if(!empty($request_str) && preg_match($danger_pattern, strtoupper(urldecode(urldecode($request_str))))) {
			system_error('request_tainting');
		}
		return true;
	}

如下图

步骤 2:保存并验证
  1. 保存修改后的 discuz_application.php 文件(确保编码为 UTF-8 无 BOM)
  2. 登录论坛后台 → 工具 → 更新缓存
  3. 清除浏览器缓存(Ctrl+F5),以未登录状态测试搜索功能

关键修改说明

  1. 核心放行逻辑 :新增了对 search.php 的判断,仅拦截包含 <script、javascript: 等明显恶意的 XSS 字符,放行包含 "、>、< 等的普通搜索关键词。
  2. 保留原有安全 :除了 search.php 外,其他页面(如登录、发帖、后台)仍使用原有的严格检查逻辑,不会降低论坛整体安全性。
  3. 兼容性:适配 Discuz! X3.5 的 CURSCRIPT 常量和 SCRIPT_NAME 两种判断方式,避免服务器环境差异导致失效。
相关推荐
计算机魔术师18 小时前
宇树发布轮足机器人 As2-W:6m/s速度、IP54防水、30km续航
网络·机器人
MartinYeung518 小时前
[论文学习]LLM 中的个性化安全:一个基准测试与基于规划的智能体方法
人工智能·学习·安全
高铭杰18 小时前
万物皆可KV(2)SurrealDB 存储布局分析
linux·服务器
Bobolink_18 小时前
跨境网络“无限流量”套餐的真实用法,买之前先看懂细则
网络·流量·跨境网络
王维同学19 小时前
IFEO Debugger、VerifierDlls 与 SilentProcessExit 配置
c++·windows·安全·注册表
万事可爱^19 小时前
Claude 新发布的 Opus 5,系统提示语删了 80%,半价还能逼近 Fable 5
android·服务器·数据库·人工智能·claude
XTIOT66619 小时前
零部件 DPM 码扫码枪生产厂家:工业 DPM 设备多工位组网与 MES/ERP 数据集成方案
网络·单片机·嵌入式硬件·物联网·计算机视觉
夜雪一千19 小时前
TCP协议简介
网络·网络协议·tcp/ip
清欢渡---19 小时前
防火墙---安全策略配置
网络·防火墙·防御保护
其实防守也摸鱼20 小时前
GitHub开源项目破圈方法论:从技术自嗨到生态共赢
服务器·数据库·学习·开源·github·命令行·linux系统