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 两种判断方式,避免服务器环境差异导致失效。
相关推荐
pixcarp1 小时前
知识库系统的内容资产闭环怎么设计
服务器·数据库·后端·golang
祺风挽楠3 小时前
ansible编辑
网络·ansible
莫名的好感°3 小时前
手机RAR解压怎么选?2026年二季度四款产品问答
服务器·网络·智能手机
皮皮蟹虾饺4 小时前
DNS协议指南:从报文格式到安全加密与 K8s 实战
安全·容器·kubernetes
Cinema KI5 小时前
Linux第一个系统程序-进度条
linux·服务器
AI科技星6 小时前
数术工坊第八卷:算力革命
c语言·开发语言·网络·量子计算·agi
liulilittle6 小时前
固定数组时间轮的槽过载优化:桶链表与批次执行
网络·数据结构·链表
行走__Wz7 小时前
【网工入门-eNSP模拟-05】静态路由
网络
xiangw@GZ7 小时前
802.11全系列标准调制编码与速率档对应关系
网络·单片机·嵌入式硬件·架构
茉莉玫瑰花茶7 小时前
综合案例 - AI 智能租房助手 [ 5 ]
服务器·数据库·人工智能·python·ai