坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

) ]* [" j8 l: i* H
231121c6zczgo68wflozm2.png
解决方案如下:
\source\class\discuz的discuz_application.php
查找如下代码(在360行左右),并替换

$ H* O# T8 [0 _* H
: s9 w" E' L4 I! K  ~# j6 F- d5 t) M$ E# H3 n
PHP
) K# c, A8 r+ W! v6 N* ?
  1. private function _xss_check() {. v7 A. u- t2 ~& V3 o
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');, q( R' {; ^9 Q
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {5 x# q' {+ f5 c# f+ ]$ d" \
  4. system_error('request_tainting');
    " s8 l0 X) Y1 o* ~* p' c
  5. }
    . K& }, u2 p( S) A
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {# I  H# C9 k! \5 t) i+ e
  7. $temp = $_SERVER['REQUEST_URI'];1 b- ?* n5 Z# o6 O' ^. }" j
  8. } elseif(empty ($_GET['formhash'])) {
    2 k# F1 O+ j6 w& j* m
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
    $ M8 Z$ n7 M) n
  10. } else {) y: ?. }7 f: F* l' t
  11. $temp = '';
    8 f* ?. Z* u, E' e$ i# D! D4 v( C
  12. }
    . F2 e8 U; A2 q9 f, F5 y
  13. if(!empty($temp)) {  {" v5 ]+ d( l9 |1 m0 Y
  14. $temp = strtoupper(urldecode(urldecode($temp)));
    7 p5 v3 e* }' L" B7 U; w3 e' n
  15. foreach ($check as $str) {
    5 ?0 l3 P! x& {. Q6 [' H1 C
  16. if(strpos($temp, $str) !== false) {
      g* z6 C4 B: W) M' S1 r9 u
  17. system_error('request_tainting');) b& p! u# A# h' P3 I: U: v
  18. }
    : z2 P5 I( S/ _, J  `
  19. }( I( h* g2 a, l) m
  20. }
    . h( \9 V1 m, Z
  21. return true;
    , t) Z$ C2 X8 |% m$ N6 z
  22. }
复制代码
替换为4 _! _$ i& p( @0 U$ [
  1. private function _xss_check() {
    5 a+ a& N9 u7 L# R9 U1 h
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
    # ~( u; v- h+ l0 v2 N3 e1 g
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
    , Q' ?. ^- g& m- s$ K6 q7 V
  4. system_error('request_tainting');6 Q& z5 ^+ L: n5 P+ T. w
  5. }  R% F, D9 X* ~2 ^( Z" X# |
  6. return true;
    4 |2 V4 c. ]2 ^: T
  7. }
复制代码

; l. m  P: {2 B# W; t& {" ]) i8 x
' X( H- b# w0 S& d/ B- {3 d  }
' Z: N9 V; r# B# P1 D$ U8 k

2 z8 z: O  W- I) Z  X* t1 b. o
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表