坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

# {/ D1 b: x4 l; U( i
231121c6zczgo68wflozm2.png
解决方案如下:
\source\class\discuz的discuz_application.php
查找如下代码(在360行左右),并替换
7 J. ?1 m$ K# t

) b  s0 N+ E, d' Y* K! w# T! p6 A4 n5 U. ^# X* ~! y( S
PHP
1 I) ^1 l6 o0 b1 Z' J% ?
  1. private function _xss_check() {# q7 n7 @% ^6 g: O0 y' W
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');7 }5 B) l5 P2 E9 s
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
    % U* K" t; S5 `8 K" _5 i3 R( t/ Q) T
  4. system_error('request_tainting');
    ; v; i8 @" g4 K+ d$ N3 {
  5. }
    * l3 h5 ~# b) \: t% X8 a
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
    $ t# H$ u% q" u# @
  7. $temp = $_SERVER['REQUEST_URI'];! L$ ?- W/ g1 y) ^9 v
  8. } elseif(empty ($_GET['formhash'])) {
    & \& B: @7 s' V
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
    - c1 ]7 x$ R' [& A2 \
  10. } else {' U) Y6 T+ |& p1 v, P& c) x
  11. $temp = '';, f2 O9 o" a  k* l" n9 P# d+ O! r
  12. }
    3 r+ }2 H; Z0 e2 b. c0 I
  13. if(!empty($temp)) {
    6 P' B" d" A' _3 ^- P
  14. $temp = strtoupper(urldecode(urldecode($temp)));9 [1 p! ?, ~' a. T$ U6 A8 Q; }
  15. foreach ($check as $str) {
    * }: f3 |, d) ^
  16. if(strpos($temp, $str) !== false) {! _. F' T" u3 Z! @8 ^! ^5 B
  17. system_error('request_tainting');, D6 ~0 g. R* t$ E8 z. m
  18. }1 A8 E5 A/ c8 ~0 v
  19. }
    1 h- G+ _+ V- Z; Y. U5 L
  20. }
    , h  h. }- A  @( {; I- M8 `
  21. return true;: D% ]0 N# ]- N/ m. H
  22. }
复制代码
替换为2 n2 |5 {. m8 n3 {( H( r
  1. private function _xss_check() {
    : t; V/ }4 X/ i6 Q! R$ Y; x# W/ t
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
      B+ G6 C6 S: m7 X  _' y* ~+ l; M" k
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {1 H7 Z. c4 W; Z/ M/ D
  4. system_error('request_tainting');3 g* U  F$ ]( m8 Q' _$ i: d7 z; ]2 x, l
  5. }( C8 t) r6 e1 L  M' G3 ^. w; w* I
  6. return true;
    1 `2 z$ r( s7 Z6 Q. T
  7. }
复制代码

8 g* h/ F/ l* _  V
; R6 E2 c" @- B% f( L" k9 k8 V6 U$ G$ {" c. K. R: f* u

/ z2 j  q& D5 `6 C
- \9 o/ W; m/ |9 B
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表