坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

5 l' z2 T0 ]. S3 N, A- j% K- h6 h. m* ^4 \- \
PHP  x1 V) ]0 |2 ~1 F; `8 A& X
  1. private function _xss_check() {, R  ?- F! ~. W  q3 A
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');
      G( H8 D3 b& b4 f* a
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
    9 y0 O, h' |& O: l+ L
  4. system_error('request_tainting');  y% [- [6 R2 Y' p& W9 N' J' Y& a5 Y
  5. }2 Q9 ~8 a1 N$ m$ ]* i, }! ~8 p5 s' F
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {) v, ]- u) N' y5 a. u8 ^2 @
  7. $temp = $_SERVER['REQUEST_URI'];0 E) e7 d6 x; m1 D: @' y, c8 e
  8. } elseif(empty ($_GET['formhash'])) {" p& W6 D, }0 z
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
    / ~: O( t0 G0 g0 J
  10. } else {
    3 ^% A% M2 v5 K# g
  11. $temp = '';! z2 k" ~! S, j0 R. K' T( _* O- O, B  X
  12. }
    ) a! {' T9 l" ?$ T7 |, |
  13. if(!empty($temp)) {
    ( G& C, G/ k# j+ s* D( j
  14. $temp = strtoupper(urldecode(urldecode($temp)));, e2 z+ h3 Q( c+ f) S$ Y1 v6 \5 i
  15. foreach ($check as $str) {" Q) H7 v; q4 F2 e2 f  ~
  16. if(strpos($temp, $str) !== false) {
    2 y* y" [& }3 U$ J$ ?5 L! h# X/ [
  17. system_error('request_tainting');
    4 k: S& [3 w. J- c0 ~& F. c
  18. }
    ) u" w; i" g3 `% K3 V7 `5 j" q' F3 R& `
  19. }
    * A% a: V2 Q; W5 z1 u5 b' h8 v( ]% o
  20. }
    & |2 z# U3 `4 V( [, \6 b% }
  21. return true;
    # F/ F4 p4 j  p% h/ w# E( l( _' J& Z4 v! E
  22. }
复制代码
替换为6 c" s* U! D6 Z4 G# c/ y6 T
  1. private function _xss_check() {2 U! W1 @# c! v! l! o
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
    : X8 [! i! t: O# J& y7 e
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {* c- Y+ [# |7 l) e5 K
  4. system_error('request_tainting');7 _$ e% P$ [5 I, G/ f
  5. }& d4 o% c/ g. x0 e- v1 a
  6. return true;
    & L- n; H5 J* K
  7. }
复制代码
; T4 t$ a! u. K' I1 Z6 H! f

; _9 N- T' ^- u3 T9 Q3 n% y7 \+ }' H5 l( K$ \$ p5 Y9 `

: O# s6 M# S, M: e( ~7 _2 D' ?  x" E
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表