坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

6 c3 J9 H* G* f8 m
231121c6zczgo68wflozm2.png
解决方案如下:
\source\class\discuz的discuz_application.php
查找如下代码(在360行左右),并替换

; v0 [- k6 F, s7 n2 g5 n' M/ |8 C: J5 C+ J- p, O
% P5 Q8 l: z4 q7 C
PHP" K* e+ q2 [/ B5 q- B0 c/ v
  1. private function _xss_check() {# Q4 ]$ \+ ?2 D2 w, }0 E9 G
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');7 @$ G$ ^0 B- W& R. b: O
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {+ x% l! i! r) P, z
  4. system_error('request_tainting');
    * W$ f3 m1 C/ v* m" H# I
  5. }
    5 F/ w9 G/ g& C3 v
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {8 C9 V- @- Z$ }0 p: n
  7. $temp = $_SERVER['REQUEST_URI'];
    3 n5 G/ l, m4 |1 Q& O! B  o
  8. } elseif(empty ($_GET['formhash'])) {" Y! Y1 s4 l% {5 N9 B
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');# n, o  B* }/ }; n
  10. } else {' e# k, ^! L) l# H9 [8 [
  11. $temp = '';5 U9 U& c3 B9 `" S/ q2 \, J! _
  12. }
      ~) d6 S) ~  e+ l
  13. if(!empty($temp)) {
    % \! D' q" U5 |
  14. $temp = strtoupper(urldecode(urldecode($temp)));
    , z" f( _: ^( `6 @
  15. foreach ($check as $str) {
    " Z" q/ H+ {0 U' F
  16. if(strpos($temp, $str) !== false) {
    ) V) T" B6 B1 P- Q3 D( H8 \
  17. system_error('request_tainting');1 S2 F5 g; `9 h$ t7 p. w
  18. }
    % k0 O: `9 j; h( M3 a$ ^  i
  19. }
    6 r' M6 V( a6 v1 `5 W
  20. }, e1 S. b0 B) e9 ~. U2 Q
  21. return true;( G0 n: Q  f* i! f5 I; b
  22. }
复制代码
替换为) }. j0 ?5 t4 ?. i, `5 z% o( |( j( h2 [
  1. private function _xss_check() {
    4 ~: U9 Q  }+ y- z
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
    % x# ~% b( ]4 N! \0 u$ O+ |" ^  d
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {( D- {0 [- L$ y+ Y
  4. system_error('request_tainting');9 x% @8 n# v$ q: h! z
  5. }
    $ v# d# m& K4 G; \0 _
  6. return true;& |4 Q4 \0 x5 z! \! w9 _8 O0 @
  7. }
复制代码
9 `' K( D+ M# `6 @) F! K4 }8 q: _
, q: R- d: [: g( ]

4 l* a$ P" l" t9 O! S7 P* s: r

  b$ y8 g. M8 I1 c6 _2 X( q0 @0 @( T4 ]* l7 r' Z7 B
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表