坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

[复制链接]
坏蛋网络官方 发表于 2023-6-7 01:40:56 | 显示全部楼层 |阅读模式
关于Discuz!中“您当前的访问请求当中含有非法字符,已经被系统拒绝”的问题,在添加或更新文章的时候经常出现,经测试发现出现这种情况更多的在使用工具(如火车头采集器)批量发布文章时出现,仔细分析发现,当发布的正文内容出现特殊符号(&,/,<,>等)时出现这样的错误提示。
出现这样的错误主要是因为Discuz!系统的_xss_check()函数原本的意义是为了论坛安全,防止XSS攻击,一般网站使用是不会出现什么问题的,但是有些网站要接入第三方接口,当第三方接口向本站post数据的时候就会报”您当前的访问请求当中含有非法字符,已经被系统拒绝”,本文介绍一种简单的修改方法避免此错误。
/ o2 I9 e* c7 x0 J
231121c6zczgo68wflozm2.png
解决方案如下:
\source\class\discuz的discuz_application.php
查找如下代码(在360行左右),并替换
* e7 V! z* I2 }" ~* z
2 b* _* P1 z0 J7 P4 h; Q1 {! [
3 H; l" h$ i( H! L: ^0 e
PHP- o4 N/ w* H# G. f1 G3 S" Y
  1. private function _xss_check() {( K' S. f* [3 _- x! Y
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');
    - `- F' G* K* X
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
    - V; G; r9 t' e4 L4 V; J/ c
  4. system_error('request_tainting');: O+ c) x2 @2 F3 L* o& P1 o
  5. }0 V9 E: k5 r5 P3 C$ L& `
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
    1 a5 A( _1 {+ d
  7. $temp = $_SERVER['REQUEST_URI'];, y9 H. u, X7 I0 {: N4 v+ Q+ Z. b8 ~
  8. } elseif(empty ($_GET['formhash'])) {
    - c; M. N2 R0 ~0 B& Y! }0 Y
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
    / T" q6 e4 Y9 r' W& o- p5 f+ R0 ~! c
  10. } else {
    ) S; _7 v/ M, z
  11. $temp = '';+ S6 ^9 p1 a! x& e" R4 F
  12. }1 k- I3 ], s' [, P0 B2 W
  13. if(!empty($temp)) {* D6 z3 D# G% e2 h# x# [, H, {1 `
  14. $temp = strtoupper(urldecode(urldecode($temp)));
    / g6 L# R9 w/ `6 h# K
  15. foreach ($check as $str) {5 t. l) {4 j; C$ o$ f$ P7 X" x
  16. if(strpos($temp, $str) !== false) {) r7 v$ B7 a; x/ L+ v- G+ h  {
  17. system_error('request_tainting');' t; t* Y; U2 ~: n- d2 q" q
  18. }" ~  j: _" v$ u3 j7 C
  19. }/ @8 L) p. W; t5 u/ N3 O. @" {5 o+ Z
  20. }
    6 g4 A- T" I9 Z) S8 U) K
  21. return true;
    4 q% w" e4 ~4 W
  22. }
复制代码
替换为# z1 S# y# b3 N( H+ X1 R, S& ~
  1. private function _xss_check() {
    0 X. m* M' i! X3 w: z8 f
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));6 e% G  K% {! m2 o2 o
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {! y6 N2 n4 G1 ~5 U; ~' {7 g
  4. system_error('request_tainting');
    , K4 B  L- z- B& o! t
  5. }, Q0 i2 e6 v; X' I
  6. return true;; Y5 b+ R5 W6 B
  7. }
复制代码
1 ]6 l0 Y6 b5 A# n
' J+ f* }' h$ H, \! \: ^1 }- ^
" l) b' k3 [4 J5 U* Z
' E/ u, R  ?' T3 }% ~8 Y% e# C
" o( n  j; W1 n
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表