坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

6 I- R7 w! g# s& I& Z: [% B4 Z$ C/ o

* j& Z) v, r2 E2 W) V3 tPHP
7 r" i4 O' e4 e0 E
  1. private function _xss_check() {
    * ^) D  D2 b( g1 ^6 ]
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');
    / Z1 f3 [2 ~( B+ A
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
    ! e3 Y8 w0 l7 @. F
  4. system_error('request_tainting');; J1 O% l6 K' V1 c
  5. }7 J0 Q: b  I$ a; x" w
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {1 k& y2 V; `. u1 V( t
  7. $temp = $_SERVER['REQUEST_URI'];. g. W+ k8 L7 U& O$ G: b
  8. } elseif(empty ($_GET['formhash'])) {* a( N' _+ j; E/ }9 g* b/ t! e
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
    2 S+ c2 e( m& e/ I
  10. } else {
    ' P2 I3 [1 B7 E' d' d; \
  11. $temp = '';
    2 R2 Y" S' g; k/ C/ e( P; x. [6 b0 Y
  12. }) t: @% v; U" x1 T8 c
  13. if(!empty($temp)) {
    8 |5 p" B- Y! H. Y! v2 a
  14. $temp = strtoupper(urldecode(urldecode($temp)));
    7 Y7 C1 L. Y8 T$ e
  15. foreach ($check as $str) {
    ! b9 t1 |! M8 G" [. E" [
  16. if(strpos($temp, $str) !== false) {
    % H( y* N" Q5 V8 K& r6 O
  17. system_error('request_tainting');! X# }. P  S# o' c4 V6 f' F
  18. }
      Y. }7 F  B, s3 D' V7 y$ |& Y& \
  19. }
    2 n; Y* V" J5 |/ U) ]1 g2 t/ i. j
  20. }6 Z% B: n/ _2 S; e, j! e0 H
  21. return true;" y. u0 P4 ?. K1 L3 Z' I
  22. }
复制代码
替换为
- ~- E9 n: w- N4 x" f3 ^
  1. private function _xss_check() {
    5 W% k( f) p5 D6 x. h; H5 A# t
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));4 w* Q7 _  s# r, m; Z
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
    ! h9 w& I2 y2 y0 D
  4. system_error('request_tainting');" q! `( E& c* Z. k! ]9 p- v3 Y% _
  5. }
      r+ q8 ?5 L5 @) J- N
  6. return true;
    & _  I9 Z8 W9 Z* X
  7. }
复制代码

! A' Y2 m/ j4 [1 [* K6 d. L
; v- V6 |1 y2 ~& \' R- U. }" j% Z8 |0 x& q' F+ W0 D

# B2 ^8 ]$ P; f# A7 \; V
; w+ c6 O% E# W- _5 c, D
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表