坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

) X- b/ v3 ]7 O3 v& f% k: U7 f9 v
231121c6zczgo68wflozm2.png
解决方案如下:
\source\class\discuz的discuz_application.php
查找如下代码(在360行左右),并替换
) J0 T. `6 d( d: A4 f, z/ `0 C) e3 Y

0 B* q6 S# u5 x$ @, {* j
' E6 L, I4 W0 V# P0 i- @. UPHP
$ G- U' z+ k0 e
  1. private function _xss_check() {$ l5 N6 P8 u( M8 r' n4 p
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');
    & L/ j6 q  @" W' K  N5 |
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
    5 h8 q: a7 v, r- Y  i/ C) U
  4. system_error('request_tainting');
    9 {) y- D" h5 q
  5. }3 v  f) R* S7 n6 _( f- n, L
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
    ; ^. N5 k! m/ ]4 N6 J  L
  7. $temp = $_SERVER['REQUEST_URI'];
    * h5 `: x2 }! _9 ]# \! r
  8. } elseif(empty ($_GET['formhash'])) {
    * Y( u1 b- z0 A+ j
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
    8 X1 r3 z5 |' Z3 ]/ n
  10. } else {
    ' M/ f4 U/ w4 ?  s9 y; W
  11. $temp = '';6 z6 p3 o8 X9 R# y* [
  12. }. C; P9 V$ T1 m+ D! p
  13. if(!empty($temp)) {; d7 w$ F- ^3 }& q+ E/ }
  14. $temp = strtoupper(urldecode(urldecode($temp)));
    ) |  Y( q+ c! M: E4 V- o  t' ^
  15. foreach ($check as $str) {
    . p8 Z+ |: H8 z5 _
  16. if(strpos($temp, $str) !== false) {3 \5 t" U7 z/ j! n' l+ r
  17. system_error('request_tainting');
    9 L9 Z, K0 M. x% h
  18. }
    ; d; J$ z4 S( p3 E( K5 S5 q
  19. }2 E9 N4 E( V" U3 s6 h5 X
  20. }
    ! ~  v4 R/ S6 V+ T+ E4 e
  21. return true;
    , k, c* U; @" Y7 n/ c: _" A
  22. }
复制代码
替换为
/ I3 y+ E' _9 H
  1. private function _xss_check() {; d7 \; T7 A; {5 S- x! c& D# @9 r
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
    % _4 U- F. E# i7 q. Q
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
    ) H) t+ g7 }. Q
  4. system_error('request_tainting');
    ! ~, y+ d& v0 O. \4 \3 J/ I& c
  5. }/ |- y0 z4 X' y) e* M- M
  6. return true;
    % L# A! x7 F$ ?, }8 p& G% g7 c% H9 `
  7. }
复制代码

9 ]( J% X3 G1 K% N0 F, m. I; }, u/ T8 ]  [4 Z

! ]5 L) P7 f! ]9 n
, ]4 l5 k, q  t* R

6 t2 D  U2 d, d1 h6 v, B& o  R3 o) c
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表