坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

! D# i" p5 r: z7 A
231121c6zczgo68wflozm2.png
解决方案如下:
\source\class\discuz的discuz_application.php
查找如下代码(在360行左右),并替换

! Y& ~9 O0 D; O1 j" N
5 S- \- P5 T; L; B6 J/ s1 e" y( j( |& J; ~9 {
PHP
) p' A5 l4 B3 y% l$ u4 U
  1. private function _xss_check() {
    0 e6 p6 I. Q. P& J7 ?! a" q
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');0 G" T' K" S9 m4 |0 f
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {4 Z* ]& K: q$ y5 Y) v
  4. system_error('request_tainting');5 B! Z  C% }6 J, J1 P
  5. }
    ( R9 s! Q4 |  Z& O6 K( d* r" Q
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
    ' J/ i) {0 @& \/ c
  7. $temp = $_SERVER['REQUEST_URI'];9 o* @; p; {/ L# u, a: t
  8. } elseif(empty ($_GET['formhash'])) {  c, h$ Y8 c# k% b; D" H
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');! O9 a' i8 I' s& [
  10. } else {: ^6 C& n& r/ c% w3 O8 {
  11. $temp = '';% T) ?9 E6 f3 W7 n* K0 Y+ D
  12. }3 u5 G* z+ I; Y8 S% O7 s) g
  13. if(!empty($temp)) {
    $ _7 S* Q* g, o9 v
  14. $temp = strtoupper(urldecode(urldecode($temp)));! X) r* }% A- J9 w6 u) P
  15. foreach ($check as $str) {& B! Z" l' o; c1 h
  16. if(strpos($temp, $str) !== false) {
    ; q& s* Y# A5 |2 z
  17. system_error('request_tainting');
    ( Q4 O" G" w, i9 ?5 O; M
  18. }
    0 [: K. ?& A# D; g- x6 T- P6 h" X
  19. }
    ! }% U' |! W4 C+ W4 \9 Q+ q
  20. }' H: \8 h$ a+ K
  21. return true;
    6 e& [3 x: _* X' W9 Z- ?+ _- e
  22. }
复制代码
替换为
0 G& I- L# p% w
  1. private function _xss_check() {
    ( e7 c% b% L4 D! e
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));$ c( O7 J; I+ X: Z) i- j" }
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
    3 A  U) n- s' J3 ]4 M8 i
  4. system_error('request_tainting');, z# v/ o$ ?8 o) v4 V
  5. }" _. ^* O8 Y# ~9 x; Z. N8 K
  6. return true;
    . w0 F) }" j( D6 v# m/ e
  7. }
复制代码
1 e! O/ ]# ^9 X
! X+ Q0 K" J4 O/ m( Y) \( c0 p
# l5 R8 Q: m3 b5 F6 c/ Q, |
; O& a, t& S6 I: x

, B) ~1 [6 }: g  |4 h: P3 P. ?0 x. Q
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表