坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

( ?1 @3 V5 U( j# m0 n
231121c6zczgo68wflozm2.png
解决方案如下:
\source\class\discuz的discuz_application.php
查找如下代码(在360行左右),并替换
9 c5 E0 n3 g4 l( U
! w2 J, V, P; c' n& y7 i' `
" r5 }" s" _0 l6 {7 a
PHP
5 u1 a7 z1 J( m( J8 B2 v! U
  1. private function _xss_check() {
    ; w6 _1 Q6 X( x9 W6 l
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');
    6 F  C- O6 F2 H( f6 J) f/ Q
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
    " I" ]3 C# T) d* P" k7 O8 q3 k
  4. system_error('request_tainting');
    ! ^, p  U5 Q! P; H5 ?" T
  5. }
    $ T+ w+ x8 a  `- k3 z
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {5 m" o5 a; [" x: E
  7. $temp = $_SERVER['REQUEST_URI'];- U  U4 ]" d! q  z& j% y
  8. } elseif(empty ($_GET['formhash'])) {7 Y) ?, c3 K! }1 `& H$ }
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
    , i1 k6 p+ T- H/ o) V1 k% c7 i
  10. } else {, }1 q% D4 K$ z
  11. $temp = '';: V- t3 r2 j. {" z
  12. }% f  R( ]. J9 M  R' F
  13. if(!empty($temp)) {
    6 j% M/ P0 H/ P
  14. $temp = strtoupper(urldecode(urldecode($temp)));! Q0 v# n: U: K* V6 N. b  K$ J% ^( m
  15. foreach ($check as $str) {
    ; _4 s6 z) ~2 z1 C
  16. if(strpos($temp, $str) !== false) {
    $ N$ w) V. U; q# M% n; {
  17. system_error('request_tainting');1 r3 j: k- `: P& j% E6 O: p8 M
  18. }
    9 N/ M6 @! E6 `7 m3 h4 x* x* D' J  G
  19. }. J9 z1 G. i9 B- X) y6 G0 T
  20. }( e. o9 t2 z; w0 q. _
  21. return true;
    & @7 c+ O* ~2 Z  U# X: t: P1 W& |
  22. }
复制代码
替换为( M, @3 B4 S6 [: `% i
  1. private function _xss_check() {% ]5 ~! {, q& N5 H
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));1 \0 Q6 Q5 W3 e! c$ B( e# `
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {1 S6 |% v2 D3 n3 [5 i: E
  4. system_error('request_tainting');
    9 ~* s% O1 ^& C% m5 Y7 d+ p
  5. }/ b  V6 l( T& G
  6. return true;' @( i$ j+ V4 z1 L
  7. }
复制代码

5 X# V7 ~2 m" Q1 K
$ u% G& I! d; z9 z9 D
# u1 f) M1 J8 h5 U- t4 N
( j" f4 v' K4 n' l7 z/ ?# G" c

+ I! d" }3 G# @6 ^5 d! I0 P9 ]& s3 h
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表