坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

' W3 k  f5 ?  e+ n8 N4 u8 z1 }3 }: t4 e
- J) f* k& Z# E& V
PHP
& N) W: O3 ~3 X& I9 O
  1. private function _xss_check() {
    " f0 l  Q% _* m* J, E5 F
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');& ]( r9 R  Z$ o2 o
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
    ! d7 [4 @: g% L5 G! a" v& o2 F
  4. system_error('request_tainting');0 b# L3 a$ t: \* h
  5. }
      E. W/ [, }8 g0 ~; x
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {. b' N% }  I; r
  7. $temp = $_SERVER['REQUEST_URI'];( e/ K1 V/ ?& _
  8. } elseif(empty ($_GET['formhash'])) {
    % k4 S- |2 j1 B! R
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
    ; Y1 E4 i# [" U% |: v  l2 E, Q
  10. } else {- g+ k( T  M% Z7 q$ }
  11. $temp = '';+ E9 z  `4 W- H) I) W% @( e& X
  12. }
    " m! g" [6 s) p6 b/ \2 r: N
  13. if(!empty($temp)) {
    & R9 U) X: [0 W0 f
  14. $temp = strtoupper(urldecode(urldecode($temp)));
    3 X. ^+ U2 X- o* P( W# @& e
  15. foreach ($check as $str) {
    4 Z6 F& x' c0 Y% |
  16. if(strpos($temp, $str) !== false) {
    % @+ _2 q! v5 I
  17. system_error('request_tainting');
    # O, }  V- d3 m" P" n
  18. }
    7 F6 Z4 R: k- ?+ r7 R. Q7 }) r
  19. }
    ( L! P$ D) j& V0 ^% {' L+ c
  20. }& b+ |$ }1 j7 t% V
  21. return true;) Z& C- \& \. T9 v, P& B
  22. }
复制代码
替换为
) j; Y& `2 N2 a8 D, K/ Z3 E
  1. private function _xss_check() {
    ) c4 I+ J( g) S4 k5 N8 s
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));2 t* t; c  _% ?7 W
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
    8 l- k: u- d, K( Y& z; D$ z
  4. system_error('request_tainting');
    4 m5 s% U! J. s9 o! i4 Q( p5 U
  5. }
    5 s  Y# T- F% Q
  6. return true;' e3 g+ p$ O5 J; `
  7. }
复制代码
3 P% D7 m2 g% j3 L! s2 r/ B
4 E6 Y( c- q( o5 e$ \" v
) Z/ o0 m8 M6 W' F/ B8 r
( Y4 y" f5 l$ k6 W
6 z0 j, @# |: F  ~/ L0 h
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表