坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

; h. P! U) |$ P, B
231121c6zczgo68wflozm2.png
解决方案如下:
\source\class\discuz的discuz_application.php
查找如下代码(在360行左右),并替换
# c5 W# s# @* F4 f2 p7 c) [+ u4 \
$ u9 D2 J5 _8 r) P

, Z$ H4 g7 Y4 d  O5 \( E& zPHP
$ N" M1 x, @" b+ ~$ z
  1. private function _xss_check() {: y; K  m$ V+ l2 L4 F  T. z% W
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');
    * X$ }' ]* I1 O1 {  U$ |
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {6 W* v' Y) p' P' @: p
  4. system_error('request_tainting');; {' p1 f" K% \; ~9 Y
  5. }
      ~4 l, d1 i/ S; C6 T- o& d4 }
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {3 |9 F, H9 O* ~, R7 _
  7. $temp = $_SERVER['REQUEST_URI'];
    7 m% w' [- i3 V+ w/ M5 c- {
  8. } elseif(empty ($_GET['formhash'])) {) e' x7 f! g2 @0 U# f
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');2 Y  N! k' ?: g; ], o
  10. } else {
    3 X) p* g2 f+ F. v% ]$ d
  11. $temp = '';3 G9 S; H( t" u6 h
  12. }
    1 v' d3 h& Y& [9 v6 x
  13. if(!empty($temp)) {* h& ]3 i+ @2 ]% @
  14. $temp = strtoupper(urldecode(urldecode($temp)));
    8 z: P3 t0 y& U7 f3 z, j% ^5 b  }
  15. foreach ($check as $str) {
    ' C9 c8 K1 ^! p
  16. if(strpos($temp, $str) !== false) {, s; F. a5 h  j( _5 I2 ?  ?/ K$ E% t
  17. system_error('request_tainting');2 h0 L1 l  n% i" N$ A+ Q
  18. }
    3 s5 x3 ?6 y, I; d; ]; x+ @& F
  19. }
    . }% ~) }* f* _" N% O
  20. }6 K" ~" P+ ~7 U) K4 R& d
  21. return true;
    7 Q: ~5 n1 g. a. N+ N0 i( F
  22. }
复制代码
替换为
  ~/ n- n& `# g$ e- E# r1 M9 L
  1. private function _xss_check() {6 B) V  r# }' t# Z* J) x. R
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));  V; J1 |, F9 G$ h5 ?( ~
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
    $ K7 _3 s# V, c! ]* f' C& o( c6 e
  4. system_error('request_tainting');
    7 i9 I# d2 p6 g0 h- P1 }
  5. }3 a; C% ]$ ?  V% G0 ^0 X
  6. return true;
    1 G/ Z* H7 K1 \0 X
  7. }
复制代码

0 S* _0 j- a; M9 `' W" ^, ^
& A  R( T' K( l% M
0 x. E/ y  Z. _7 Q6 s7 a( O5 N9 q! `
' n; ^/ N' j) S/ o& v& c
) S' j! c) V+ [% T7 I5 A
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表