坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

! q( X, r; r& U+ w' {
231121c6zczgo68wflozm2.png
解决方案如下:
\source\class\discuz的discuz_application.php
查找如下代码(在360行左右),并替换

) G9 ?  q) J9 [- w( _9 f% s
3 Q( U2 P( ?( {$ |$ N- c
6 h( |& p. Q: X. dPHP
: ~) l7 c* e+ V/ N$ N! Z
  1. private function _xss_check() {
    7 k# \  O' Z' {' S: U; g' }& T
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');
    ) J  I# ~- y3 e" i/ Z- P
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
    0 `4 ]9 s0 ^7 {% l! ]
  4. system_error('request_tainting');
    ; l. O6 ^7 v2 s; g- M
  5. }
      h6 |8 v% K% x# V) Q5 n9 O
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
    1 _& \3 N* F4 u/ \; o
  7. $temp = $_SERVER['REQUEST_URI'];/ Y% E; c  @/ O/ d$ O. T9 E  X
  8. } elseif(empty ($_GET['formhash'])) {, U! f4 N1 }& s  v9 A- U
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');1 `1 v4 |8 w6 \! {8 ^: e* d
  10. } else {" j8 I. a/ J3 P  x5 e  l) w0 ~
  11. $temp = '';7 ~. d: B; b0 J7 Q
  12. }
    ) V- L0 }) [. ~* y: g0 |6 @& j
  13. if(!empty($temp)) {& y9 R  j  W7 D: j
  14. $temp = strtoupper(urldecode(urldecode($temp)));( u7 e$ j& l+ K& |
  15. foreach ($check as $str) {
    + W0 f5 H4 b+ g+ s
  16. if(strpos($temp, $str) !== false) {
    3 r9 e+ M) ?$ d& d1 q
  17. system_error('request_tainting');. q/ z' h8 f: y* P% ^9 i
  18. }
    2 O7 X) s. w8 F4 Q% `
  19. }
    6 q1 P4 |* \3 z/ p9 k
  20. }
    6 [1 i0 h' D2 [/ c
  21. return true;
    4 p: Z8 X' G6 w. H* H, V  j2 o
  22. }
复制代码
替换为
$ K3 M9 Y( [* r9 L
  1. private function _xss_check() {
    0 e: Y8 c# f! h6 ^- T8 \# H
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
    & J- k' g8 F3 ]# |  J8 s& B% e( n
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
    / Z* A/ e! h2 Z  ~" Y+ B
  4. system_error('request_tainting');0 O/ g) Q, O$ N& g* l0 y! m) Y( h
  5. }4 Y8 [. e% _  ?6 ^
  6. return true;7 ^6 [& R" M" S: C
  7. }
复制代码

+ j& ~; |7 D5 ]3 V3 v" [+ x4 g: B7 X5 N5 s/ F# h
& H1 m  r6 A- P

$ ^+ y/ b( \# U, |) O+ M7 ]- \3 U+ m+ ?) Y) ^- Z! }- q
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表