坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

9 R  o( ]1 B& q. \
231121c6zczgo68wflozm2.png
解决方案如下:
\source\class\discuz的discuz_application.php
查找如下代码(在360行左右),并替换
* ^3 }' {. _2 b  i& z
  w& ^2 u6 G) ?% C
+ n7 m: z$ c' a" u
PHP
: ~# ~& H9 n0 }% o% O
  1. private function _xss_check() {
    - _& R2 l! \# v, g5 D
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');
    , B3 h2 Q% \3 ?0 @  G* H& G/ j( [
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {3 \- X( n% Q2 I
  4. system_error('request_tainting');; i9 u1 G, ^! @" q
  5. }  d0 k3 s  a. n0 f) o. @
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
    ' M/ \2 h; M. }( ]
  7. $temp = $_SERVER['REQUEST_URI'];) @2 \5 I3 K% l' t) ^4 ~) [- C' L
  8. } elseif(empty ($_GET['formhash'])) {& \& Y: d4 q0 T! m; x; X
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
    0 O- `! a- n4 w- W: e) ~
  10. } else {: Q0 s7 L' s3 @7 _' [8 J6 {0 `
  11. $temp = '';) x7 i4 w( B* }
  12. }  t  N' D3 _) c: h) C8 t% q
  13. if(!empty($temp)) {+ m! t; m* e) a7 o7 T
  14. $temp = strtoupper(urldecode(urldecode($temp)));) D0 S( w- P. C& n- k& u
  15. foreach ($check as $str) {7 {3 ~) H: C  Y) a0 q
  16. if(strpos($temp, $str) !== false) {" Z/ P; Q0 E' R8 [5 o( s  U
  17. system_error('request_tainting');
    ' y6 Y3 c5 o9 p0 ~& X
  18. }
    - c& }( Q7 |5 d) v' `
  19. }5 B9 s$ v1 d+ C) K" p3 l
  20. }
    8 r5 E( g2 J/ L1 B& D& ]
  21. return true;% D; w$ M0 O" E! `3 b1 {; G
  22. }
复制代码
替换为: u& {) w& C* J. y
  1. private function _xss_check() {5 b- t" U% A3 h4 C+ g; e- p" q
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
    0 m( {3 h. w# A' d1 {  P5 U7 n
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
    6 ^5 y) A  _$ P2 s, Q, p9 _
  4. system_error('request_tainting');& t+ H. X" Y: V0 |
  5. }
    . E. c& O" g$ C3 s
  6. return true;) K2 g) {- r% u) }7 o
  7. }
复制代码

* j" v3 q+ {  e( A5 ^  }$ `; U0 r- b9 P4 j/ h' ~% w  F

3 C8 {' ?  T& x# q9 |8 t

( O9 ^. i, d- b. v! B" p( Z: }* h& `9 I2 a: `. s" m1 E
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表