坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

: }; b" u$ p2 {8 @& ~1 ~% a
) u5 {. x, y, k4 i5 u1 D3 |, ?- B, V
2 o; x; \$ B. zPHP+ \; a, X  r/ B9 l: z  j
  1. private function _xss_check() {
    , G0 X2 ]; B3 |' b4 K% R
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');6 n9 \8 x* w7 i& H" W" M/ N
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {! u7 U% m$ s$ O( x' v; k7 e+ ?
  4. system_error('request_tainting');  y+ d) l* ^, i" f' V1 u( _9 y
  5. }
    ; T* X( Q1 P& t2 l! S; b8 I2 A/ I& V
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
    0 O' K' x9 P  D/ @1 }, {" P
  7. $temp = $_SERVER['REQUEST_URI'];' \/ F. w4 j9 ?9 b9 [( G/ e. O
  8. } elseif(empty ($_GET['formhash'])) {
    ( v9 q, C  v* h( \! I* _
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
    ! [) O, o+ Y2 J% E& Y( ^; k
  10. } else {7 z1 [+ Z2 m$ i. q3 `, y
  11. $temp = '';
    5 ~* a2 b' Q- S# [% T( M: Y4 o! m
  12. }
    ) k8 J  A" ]4 i% ]
  13. if(!empty($temp)) {
    & r" e& y: Z: E& w- k$ C
  14. $temp = strtoupper(urldecode(urldecode($temp)));
    ! }7 p3 \! Z* X+ T4 j7 |
  15. foreach ($check as $str) {
    5 m6 x/ a2 X; s" h# L. g6 |
  16. if(strpos($temp, $str) !== false) {
    ) F3 n, T$ L* ~1 q7 m  U
  17. system_error('request_tainting');
      B" K2 K$ c% w& e
  18. }, y% r5 @- l1 b6 Z1 }/ ?
  19. }
    ; f9 h( j1 K% G8 |' e9 ]2 j
  20. }+ x6 R# Z6 g" b+ \; g
  21. return true;# L% ]1 ~+ y' g
  22. }
复制代码
替换为! B* U& l# q* V7 F8 S: M( ^
  1. private function _xss_check() {
    ) v( Z: `0 ^- P! y0 [$ K% q( V
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));* S7 ]: n, L5 _( e$ {
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
    * I/ |7 `, _7 i% m! z% t
  4. system_error('request_tainting');
    " [8 J4 S, G3 V( A
  5. }
    4 f2 ^. [" r. R2 ]7 d* ~0 S. Z
  6. return true;1 ^0 s/ {  `# h" k* `; q4 |; X2 F' W
  7. }
复制代码
* l! S2 e0 [5 K! `% @9 j. M% V8 }
5 C: R: f7 \3 v) D+ S& Q

; I" Z1 z; I3 j

, N9 ?# j% A- ?/ h" M- |5 a* J, {: U) B! J1 }' |5 c- e; r
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表