找回密码
 立即注册
搜索
查看: 2970|回复: 1

[原创教程] Discuz!您当前的访问请求当中含有非法字符,解决方案

[复制链接]
发表于 2022-1-12 23:19:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

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

×
Discuz!系统的_xss_check()函数原本的意义是为了论坛安全,防止XSS攻击,一般网站使用是不会出现什么问题的,但是有些网站要使用设置远程变量或私人变量的API,当API向本站post数据的时候就会报"您当前的访问请求当中含有非法字符,已经被系统拒绝",本文介绍一种简单的修改方法避免此错误。

解决方案如下:

\source\class\discuz的discuz_application.php
查找
[PHP] 纯文本查看 复制代码
private function _xss_check() {

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

 if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {

 system_error('request_tainting');

 }

 if($_SERVER['REQUEST_METHOD'] == 'GET' ) {

 $temp = $_SERVER['REQUEST_URI'];

 } elseif(empty ($_GET['formhash'])) {

 $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');

 } else {

 $temp = '';

 }

 if(!empty($temp)) {

 $temp = strtoupper(urldecode(urldecode($temp)));

 foreach ($check as $str) {

 if(strpos($temp, $str) !== false) {

 system_error('request_tainting');

 }

 }

 }

 return true;

}
替换为:

[PHP] 纯文本查看 复制代码
private function _xss_check() {

 $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));

 if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {

 system_error('request_tainting');

 }

 return true;

}

转载请注明来源于:新秀网络验证论坛

评分

参与人数 1秀币 +20 好评 +1 收起 理由
admin + 20 + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2022-1-13 10:16:13 | 显示全部楼层
也可以通过url编码,进行规避此类问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|新秀网络验证系统API ( 豫ICP备2021033257号-1 )

GMT+8, 2024-4-26 00:51 , Processed in 0.225000 second(s), 68 queries , Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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