坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

3 s6 C8 F; T' x5 X& c' \3 [" n3 q5 b9 q0 k0 I1 d+ K
( j$ [- X: }/ t8 i
PHP1 z% Q; r, {6 p' U' g
  1. private function _xss_check() {% n$ g( w+ R* K
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');
    , n: l& n+ L' M$ H- Z5 u1 Z* Z. F
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {2 v! _1 ?. g0 D; o/ Q1 ?
  4. system_error('request_tainting');
    7 v+ W: ^: n: a6 w5 f4 o
  5. }
    # f: e4 K* Y: d* V0 E
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
    " f7 X& F. @" g0 ^( x. a. j" d( e
  7. $temp = $_SERVER['REQUEST_URI'];. {2 F4 n8 U* }
  8. } elseif(empty ($_GET['formhash'])) {
    $ T* p, H- B8 h4 f8 s% i% [
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');5 r# [0 c% Y  b6 U% P4 b( v3 x3 j/ [3 A
  10. } else {+ e6 N$ N' B5 r' b# I
  11. $temp = '';3 V# ]) f+ X) {; g) G
  12. }% }3 u5 I/ a% s# P* Y* p7 ^
  13. if(!empty($temp)) {
      [' b  G: W* _$ v4 a4 D$ U) I- A
  14. $temp = strtoupper(urldecode(urldecode($temp)));# w9 X* y  W* ^
  15. foreach ($check as $str) {
    # o- I  v( A# q: K. |; j
  16. if(strpos($temp, $str) !== false) {. _  B; ^* e3 [1 \" [! H
  17. system_error('request_tainting');
    : p: {& w& F  ?4 \% ^0 e
  18. }
    % `7 |+ Y3 C8 i; ~6 Z
  19. }
    7 F& l# N' t' c4 t- ~. i7 M
  20. }0 C! o- \' v7 g+ r% N3 I
  21. return true;
    " p8 h2 i# p  k3 [+ e
  22. }
复制代码
替换为' W0 Y  B: M; A# A9 ~
  1. private function _xss_check() {7 O8 O  a2 i& x7 u# `! e! K
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
    . v3 R. ~# W- q/ g" T
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {- f, \" l/ d, J6 U1 ]: S
  4. system_error('request_tainting');
    & [) x6 d0 `- X/ F) T% c+ V
  5. }
    * q# K' y) Q$ `) |$ m$ P6 z3 I; p7 Y  B
  6. return true;
    1 a/ n! [$ w6 G1 B, }
  7. }
复制代码

$ q( d/ Y' v$ U$ i1 O" r5 K/ b8 X0 J" F  h2 U
6 l0 n2 b$ I: {  p/ E; k& o/ V
1 I$ N6 D6 f9 E* U5 u) H$ w
5 M9 k" S& u/ I# x0 b) T* k
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表