坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

8 P3 X7 l* z1 _/ D, t
" ^- n6 V" }1 E5 ~7 C% K+ l6 [2 x  e5 n3 _' D4 N4 K) x
PHP
7 h9 Q: a* u5 s8 L/ L- m
  1. private function _xss_check() {
    8 d* {- s4 A1 ]
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');/ Q8 \7 z. u8 ~7 q. N
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {  h2 G) o6 l) b, ?* T0 i: Z2 h
  4. system_error('request_tainting');
    & b5 O: n! q. y  e+ `
  5. }
    9 a# \5 O2 G- v7 A' ?+ v
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
    : L3 |# x3 m9 x8 J* d
  7. $temp = $_SERVER['REQUEST_URI'];
    ; b5 e$ ~9 ~9 G
  8. } elseif(empty ($_GET['formhash'])) {
    7 S$ j" m$ p3 M7 v! {4 J. y& B; B  B/ h& e
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');$ h7 U7 l7 S, w* }* _2 d) @1 q
  10. } else {1 |& U( P& R) {' }
  11. $temp = '';
    # l0 Z0 g8 h: H* r  I
  12. }& u4 L- e' K0 g& \9 z) w( l
  13. if(!empty($temp)) {
    7 d7 l( r/ |3 M
  14. $temp = strtoupper(urldecode(urldecode($temp)));
    7 h. W( i6 H+ Z: R! U
  15. foreach ($check as $str) {% k6 V- T3 l( q7 J
  16. if(strpos($temp, $str) !== false) {
    7 V+ e8 q' K: G2 x
  17. system_error('request_tainting');
    % y+ h; z7 U6 N' n! u
  18. }
    3 L! X# M% N1 d, \9 J
  19. }
    4 S+ M2 X" \6 N+ ~1 X8 S6 E
  20. }: I* l. A: [! I: }9 z/ x7 M! n
  21. return true;& v- S6 a: g- R$ r: \) C, l2 U
  22. }
复制代码
替换为
* J0 T! G" P  V8 b- d  }! v2 ^. c3 G
  1. private function _xss_check() {
    & q% P9 Q/ h+ H/ }# `0 ~/ o5 v
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));5 ^4 L/ k% t; W% C  \
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {* I: t+ W- [( `1 }  s
  4. system_error('request_tainting');, J% l; A. n* y7 r9 r
  5. }' P( U2 M) S6 ]( h1 E# M9 O0 @
  6. return true;
    : Z# r# d9 B1 x( A: ]" w
  7. }
复制代码
1 I9 ^; ?! }  _& e; a. \
5 L9 b* S7 u/ ~# ?. I+ \
% N% |+ L0 K% y  M, \" i

( ^( @: e( b: j' b  S, G+ {
: v' R. \! N- M, f- |
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表