坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

1 A) [7 G% m0 Z
8 j4 w# y# F& a9 k8 `7 U* A. V/ y, N3 s# w7 z/ U; P4 y
PHP) d4 c8 M% M) y0 @8 M% H0 W
  1. private function _xss_check() {1 U" c! s+ x/ N2 p7 ^
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');1 a, W* J/ V3 l$ {! o) }
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {! a( o+ @2 `/ s2 y( A! |
  4. system_error('request_tainting');) t  F* t  Y$ B1 O& c
  5. }
    7 C" t# L, l5 Q- H
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
    , R4 ?$ \2 a" O) ?1 {" q8 r3 l& j
  7. $temp = $_SERVER['REQUEST_URI'];
    ! M2 z6 x5 \. f8 k, x* K
  8. } elseif(empty ($_GET['formhash'])) {
    6 A" u% Z) e3 U$ S2 p# o. |5 ~" x: Z
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
    # G3 w2 \' U4 }' J/ T
  10. } else {
    # Z7 V' c9 W) I; q6 A
  11. $temp = '';% ?) [0 G! a. \4 u( X) G
  12. }
    , ^- H3 H/ O4 u$ B; w7 `
  13. if(!empty($temp)) {4 N+ K4 }! i" r8 ~2 A
  14. $temp = strtoupper(urldecode(urldecode($temp)));6 q4 r9 H2 \7 ~7 `" e- k  ]
  15. foreach ($check as $str) {
    - V+ P' J  b. W9 r; M. u) z' n
  16. if(strpos($temp, $str) !== false) {" Y" m+ X5 b" A& U
  17. system_error('request_tainting');
    ( K4 I- ~$ m: S3 V
  18. }- X- v2 O8 B9 B
  19. }: x% C  ^4 C2 W6 o8 b! A, ^
  20. }
    5 \( z/ N" {+ F/ Z! L5 _' Y
  21. return true;; j  i* a: H! u( c& R6 |4 u5 @
  22. }
复制代码
替换为
. ]9 ~& W4 n: x
  1. private function _xss_check() {
    3 t1 e; X2 K3 {0 p  Y' m! E
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
    # W7 \; H- h8 d' |# X
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {( P. H+ D& t2 {/ L) ^
  4. system_error('request_tainting');
    4 {, j& D3 ]: x; j; l
  5. }
    3 M/ {0 x9 F) W
  6. return true;
    ) B  C% f! X/ n$ V: ]' L  v
  7. }
复制代码
7 i8 E( I- \" S0 S0 ^0 A- j  \# T

0 p$ [4 s9 u# A* w/ a2 p7 m5 f/ q: `

  J5 Y- J! a; u( R
7 ^: N% L4 H+ i3 c
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表