坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

# H. V) a/ v# R8 v' D3 d
231121c6zczgo68wflozm2.png
解决方案如下:
\source\class\discuz的discuz_application.php
查找如下代码(在360行左右),并替换

0 i4 H% a7 U- G  e! d7 V4 U/ Z- Y" U; O8 G
! _4 z+ z5 I* w# l
PHP
) M7 H! v$ A- l9 D
  1. private function _xss_check() {
    & F* A8 Z* Z& }0 q' t1 j- F  [- K
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');; O, X. Z8 R9 l6 j& F; {5 v5 r
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
    5 G. n6 q7 Q# P  ?
  4. system_error('request_tainting');# ~* z, J- q# |- \( w
  5. }
    $ U1 S  E; Y2 u" K2 n/ ]
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {6 E% ^2 O/ U* N: P
  7. $temp = $_SERVER['REQUEST_URI'];  B& h2 q- Q  ]7 A) H# x2 T
  8. } elseif(empty ($_GET['formhash'])) {& o8 _; U4 ~8 {) b0 J0 q- W) e
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');! g+ _# s5 I2 q
  10. } else {( n; `! ?9 Y' E9 _6 h( j
  11. $temp = '';* o' W! C6 G  |: Z& G% N# K
  12. }
    / d. Z) @5 E' O7 s2 S+ C
  13. if(!empty($temp)) {
    0 L- ^4 ]" C) n  `
  14. $temp = strtoupper(urldecode(urldecode($temp)));8 T1 w( h/ g- G/ Q; O6 `8 w
  15. foreach ($check as $str) {
    6 C+ p, S$ s8 c* `: c$ Q
  16. if(strpos($temp, $str) !== false) {7 r, Z7 ~! N5 r8 y- E- F$ Q
  17. system_error('request_tainting');) }. f3 ^9 U1 l# \
  18. }
    9 I8 U) L( V  q) r
  19. }
    + O) O, u4 i3 d: V6 ?9 W
  20. }# x: r1 u, [6 C. R5 c! ~1 ~
  21. return true;
    , K3 q+ y. |: A0 E6 G+ I* n
  22. }
复制代码
替换为4 T/ ]7 v4 A- B4 g/ g
  1. private function _xss_check() {+ C7 j, S/ ^7 v- |! S; p
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));& r# _4 c$ x4 m& }' m/ t3 ^
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {' k$ o: M( q/ u
  4. system_error('request_tainting');; W, c! l& R" Q3 Y$ g0 _
  5. }: H0 `0 ]: [8 _* a8 h
  6. return true;* @" Z# F5 y# Y$ A2 h
  7. }
复制代码

& ]& S- _2 n5 `9 k" n# k# y, F7 m* f- W7 x# v5 q4 Q
$ C6 v& \: |3 t! h* a

2 k, D$ N& H6 Y
# P& H9 Q( N) e# ?8 h  d0 c6 y( L
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表