坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

7 e& I7 c; d% u- O0 \# Y
1 v: x0 S: E) L8 \! R& M
% t8 `) P& e) |& F3 [1 P# y' M8 VPHP6 n/ _' R. I4 {+ n% t
  1. private function _xss_check() {
    . }( V( W3 x& q; J" @2 `
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');3 b" u/ M( R$ A4 F
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {% _9 x7 A8 s5 O  T
  4. system_error('request_tainting');
    ; w: p' V* q2 s6 V+ H
  5. }6 s4 c7 V: M. n& \8 `% S( b
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {0 @8 `& W9 l/ V2 C+ F6 B; ^
  7. $temp = $_SERVER['REQUEST_URI'];
    & j+ E% j9 n6 H: t
  8. } elseif(empty ($_GET['formhash'])) {
    8 n* G% r  K% g2 a
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');& B3 N" \4 `0 Y% @( O
  10. } else {+ D# J  ~2 E0 K% p
  11. $temp = '';0 O8 t% ~$ y- o8 M' }) H0 A
  12. }
    " ]8 F3 D" |% D! T- c9 L& D1 @. c
  13. if(!empty($temp)) {
    3 @" _( D: F' M: v# T
  14. $temp = strtoupper(urldecode(urldecode($temp)));
    * B" J+ r$ ?3 I3 v+ i
  15. foreach ($check as $str) {
    ( Y3 q( \- h  H/ s% D- A
  16. if(strpos($temp, $str) !== false) {
    . n# m& F: T0 I0 v# t
  17. system_error('request_tainting');- ]+ U& W0 q5 O5 {$ ^( P  x
  18. }
    % d: b" ~- d' e1 |- E1 A1 z
  19. }
    ( h. K& g) K% D/ j) [
  20. }, f5 c1 V$ [* r$ ~) w  ]8 d# |
  21. return true;
    ' f. c+ m1 l# o, R; L, M! [" M9 t
  22. }
复制代码
替换为
  X  Q% ~8 r! Y1 x+ J. b' ~
  1. private function _xss_check() {
    6 `6 L& G9 g8 G! O& ~3 N, E* A
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
    8 c: R/ z# m4 ^: }7 x* K& k/ j1 s
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {' E; d, d% Q7 M5 X- ^* F( u
  4. system_error('request_tainting');
    " k; g' g3 a6 I5 l% F9 d
  5. }9 W" q; \8 F/ f+ V& z/ \2 g
  6. return true;4 @4 G! m+ U! v* n. [$ E2 b
  7. }
复制代码

7 k+ {4 j4 x* z/ O$ N5 i4 v% ?& i; a; T2 b+ F/ E
; z# s) U0 p8 V
1 c5 z8 H1 C7 e

8 G2 l% j4 c' ]: w6 C
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表