坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

7 }' K+ T, X' \4 L/ ?9 S* l0 B
. N4 d. l2 h# i  n* s/ y: m3 t: q! ^
PHP
+ K8 V5 f0 N2 q
  1. private function _xss_check() {
    0 P9 p0 n& S! _# ?5 T! X8 l
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');1 p: O1 |# f' y: T) Y& |3 d2 r+ k
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {3 z0 ^: \) h  n$ S; g
  4. system_error('request_tainting');" h& n8 z5 ]. }
  5. }4 P  {& K, Y2 W0 n
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {+ G0 O4 z2 }# `, P, h6 Q
  7. $temp = $_SERVER['REQUEST_URI'];
    6 u, v/ O5 v# ?8 i4 t0 G/ y5 h
  8. } elseif(empty ($_GET['formhash'])) {
      R* m6 N& |; r0 J) V7 Y4 a
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
    $ E4 Z: c3 s/ U; o/ e/ T! O. O/ s
  10. } else {
    7 M$ i. a7 X9 y$ [7 T& e- X5 N
  11. $temp = '';
    , R# ~3 X0 G+ G7 [
  12. }
      D+ I* u5 O. Q# P& l# C, X: J
  13. if(!empty($temp)) {. V9 E3 A; l- A* }5 n: K0 v
  14. $temp = strtoupper(urldecode(urldecode($temp)));
    3 S$ c2 `" n0 E  D
  15. foreach ($check as $str) {% k5 S/ d0 {3 g, ?
  16. if(strpos($temp, $str) !== false) {
    2 V: G3 e. v; u
  17. system_error('request_tainting');
    ! N# }% T/ [9 m+ x0 c% {! ^
  18. }
    ( J, N$ _+ R/ G0 d* B1 z
  19. }
    6 f+ N! W  G' i
  20. }
    2 }3 {- U( {+ e0 ~; q' g
  21. return true;
    2 |" r# ?- P" `6 q2 E3 T9 ~
  22. }
复制代码
替换为
: R* {# P1 S+ m# l
  1. private function _xss_check() {" E4 @, d; k, p& B, h5 J- x" `+ N
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
    $ G& e0 `( a2 Z1 E# t! M3 v
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
    + [8 R" E$ {; c; i
  4. system_error('request_tainting');
    % }2 p0 r3 d, |9 z. e- |7 f
  5. }8 ^+ W( R4 k8 f2 N0 T3 S+ g
  6. return true;& U9 |, F* f$ c$ _2 ^
  7. }
复制代码

) D/ O1 Z9 ~9 |* U3 Z, ^6 ]2 M+ @3 ]
$ t  v5 z, r4 y# s

: Q* E9 I" O% Y, c# d& w: S, U! ~) B6 q% {/ r$ n  M
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表