坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

[DZ教程] Discuz!您当前的访问请求当中含有非法字符,已经被系统拒绝解决方案

[复制链接]
坏蛋网络官方 发表于 2023-6-7 01:40:56 | 显示全部楼层 |阅读模式
关于Discuz!中“您当前的访问请求当中含有非法字符,已经被系统拒绝”的问题,在添加或更新文章的时候经常出现,经测试发现出现这种情况更多的在使用工具(如火车头采集器)批量发布文章时出现,仔细分析发现,当发布的正文内容出现特殊符号(&,/,<,>等)时出现这样的错误提示。
出现这样的错误主要是因为Discuz!系统的_xss_check()函数原本的意义是为了论坛安全,防止XSS攻击,一般网站使用是不会出现什么问题的,但是有些网站要接入第三方接口,当第三方接口向本站post数据的时候就会报”您当前的访问请求当中含有非法字符,已经被系统拒绝”,本文介绍一种简单的修改方法避免此错误。
6 E2 u7 c; [9 K9 w5 {( {4 C" I
231121c6zczgo68wflozm2.png
解决方案如下:
\source\class\discuz的discuz_application.php
查找如下代码(在360行左右),并替换

/ I' C% j2 u$ M
2 s% ?! S% J4 D4 ~) ?2 \! B9 h$ W, G0 o/ {/ s8 W! G9 ^
PHP
% `1 E' z- F$ v2 P
  1. private function _xss_check() {% Q! X; k! d. k5 l
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');8 L1 K% E( ]6 s, \  z9 V  N$ J
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {! N( L: x. X8 z
  4. system_error('request_tainting');* A7 M( M/ w3 b$ E( m" G9 e# @) V
  5. }/ z/ J; P0 J% |% r/ O
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {  y- _! n/ ?/ K, t! l
  7. $temp = $_SERVER['REQUEST_URI'];
    ( U' D& [7 B; v  ~0 S, h$ _# e
  8. } elseif(empty ($_GET['formhash'])) {
    ! ]* e- H* C7 M1 S
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');/ P/ k& [  P  y5 _4 n8 ?4 j
  10. } else {$ m5 X  l7 ]0 f3 Y- R
  11. $temp = '';
    + s/ [5 X! o  M# c" \# V# ~
  12. }
    : F4 f2 g3 s: K' g+ ~& g& g2 ~
  13. if(!empty($temp)) {) k' n2 ~  X2 e, ^2 g! F
  14. $temp = strtoupper(urldecode(urldecode($temp)));  ?0 |  y. w) v3 b6 i' x
  15. foreach ($check as $str) {- t2 R: v, r6 d" ]0 B8 b
  16. if(strpos($temp, $str) !== false) {6 _; R4 f% `) }- ?# l* q) K
  17. system_error('request_tainting');
    ) U$ s, G# \( Z1 ]$ q5 x; ]+ o# O8 Q2 q
  18. }( w  _' x- {5 @: r! }2 v+ L
  19. }' {1 h$ \! D$ X5 j/ B3 J4 J
  20. }
    % h$ i: [8 ^+ M" m( v
  21. return true;
    ; m  x( z2 p* b/ P$ f% b; _
  22. }
复制代码
替换为5 M+ K, ~; @+ P9 ?* B5 u0 t
  1. private function _xss_check() {+ A3 b1 H2 ~" g. x+ ^1 q
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
    : |4 d7 q8 A" {0 _: ?. _
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {' A8 k  \3 g: Z% Y8 s4 ]. G
  4. system_error('request_tainting');
    * F: b" V9 u1 W' A3 k4 f
  5. }
    . V  `; b# D4 i4 I0 X5 d
  6. return true;
    & N- x4 }& A# {) i6 u
  7. }
复制代码
+ z& v+ R% n* w' c7 j; q
% \0 v+ M% O9 D9 w9 p3 v

7 v8 H8 J5 @* s3 V1 N- b
, A( a7 ^+ i# o. Z/ g1 m& j
( J7 W+ _3 r: n, ]) v0 z9 A
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表