坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

- o( y6 `! Y4 }( Q
4 M% K% b  }+ e8 X8 q, oPHP
$ e4 B- \; s+ K
  1. private function _xss_check() {
    8 X0 L- C& w$ P, m9 P
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');" B- q$ }4 _% v& {+ G
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {" ^, z' m2 X' J- m/ ~' F- w
  4. system_error('request_tainting');
    . n! @5 j4 ?4 H. G; _3 }% U( u' U5 T# [
  5. }# r3 b6 q' W! H# p* s5 m
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
    # ?  Q) e8 Y7 m8 x/ J4 I+ a& R
  7. $temp = $_SERVER['REQUEST_URI'];! Y" C6 n6 u0 j9 S- C6 b* }
  8. } elseif(empty ($_GET['formhash'])) {0 a- Z) I) ]$ T% s. N4 q
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
    2 U5 b8 s# R( q5 q. _+ m
  10. } else {' X# R& O  D8 F8 @
  11. $temp = '';
    ; ]3 g5 c; y! H" t5 a% l3 m) q8 r
  12. }
    7 D# B7 P/ }3 u  k2 ?5 `6 {
  13. if(!empty($temp)) {! s. t4 P2 Z8 |0 L# S1 L
  14. $temp = strtoupper(urldecode(urldecode($temp)));( D' U* I" q4 W5 P7 q' ^4 H; {
  15. foreach ($check as $str) {) C: I6 H$ _) ?4 s; S
  16. if(strpos($temp, $str) !== false) {
    ( w) j- ~6 t3 w) ?3 m7 E* M
  17. system_error('request_tainting');6 u; v! U4 x/ P/ h8 G
  18. }, X* E, E; w  R, N
  19. }
    3 g/ c: e2 b) U$ Q
  20. }
    % u9 o7 j; D& Y! ^8 c7 Z
  21. return true;
    % x0 o. f5 I5 _2 n2 c+ i# F( ~, f$ c
  22. }
复制代码
替换为6 W, K' A7 T  \+ Y  o) X) {
  1. private function _xss_check() {' _4 z7 t0 L; Q$ i% d' Q
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
    * A1 `. {& M" H/ m% i; c( M: G* g7 C
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
    * c8 ]5 r; T( o8 ^5 N3 g+ c5 d
  4. system_error('request_tainting');, m  r+ C& b& w* u0 Z& Y0 P7 [& X6 p" L
  5. }
    : d. f; ^8 o$ q$ I, m
  6. return true;
    ' i; e+ ]5 i9 b, _
  7. }
复制代码

  D) y* \7 t/ W5 f0 ]9 j
' s5 k: J+ i* F3 N( f
4 G- c$ A" _4 ~* u# y/ M0 y
: `2 N0 q( w' {7 l5 y& r
. V* x/ M( d/ ]) Z! l3 h5 ~& b
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表