坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

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

  D; R4 m* i2 w: U9 P. l
231121c6zczgo68wflozm2.png
解决方案如下:
\source\class\discuz的discuz_application.php
查找如下代码(在360行左右),并替换
  Z6 N1 H8 K" k! N7 ~* ^3 _, e
0 C4 K( ~9 ]8 |* X

+ T; @, l3 d' O! y. W( a, ZPHP9 a5 z8 h* G8 Z, _5 F) Z$ Z( z; p
  1. private function _xss_check() {; p( v. r1 E  K# c
  2. static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');
    . ^( j$ C& K9 U  u
  3. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
    $ H) G; n6 a! r9 [1 L
  4. system_error('request_tainting');
    : `  a( j$ Y4 _
  5. }3 B5 V+ t# _7 @- d0 D3 o
  6. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {  \' K$ b1 C  b+ S, |/ n6 @
  7. $temp = $_SERVER['REQUEST_URI'];
    & }* `# d, ?9 u
  8. } elseif(empty ($_GET['formhash'])) {- s4 p9 d, H# ~, {7 \! V- |
  9. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');- j3 q+ p4 {0 U. b5 D
  10. } else {( q! t4 h9 ]& O: m
  11. $temp = '';: T) i- Q3 i4 Q2 W4 o- @
  12. }& ]6 v" |1 m1 l+ \! v6 _
  13. if(!empty($temp)) {
    - ?2 T3 O6 r" i: _
  14. $temp = strtoupper(urldecode(urldecode($temp)));  o/ y# d6 E9 p) @4 f
  15. foreach ($check as $str) {
    2 k6 T3 @9 ^/ ~$ @
  16. if(strpos($temp, $str) !== false) {
    & n/ z( q% |( K& Z; @
  17. system_error('request_tainting');' |, e( P, f# ^# e1 S2 P% A% Y
  18. }
    4 ?. W. Q9 F% z$ H) w9 ^
  19. }
    . h# J$ h, H* A8 \" b, n& a
  20. }( K1 w) W4 B9 _) x) z6 }3 h
  21. return true;! O0 p5 X6 B( ?3 z) I
  22. }
复制代码
替换为/ R. O. C6 j4 N# Q9 Q. q
  1. private function _xss_check() {4 V0 U" e) M5 l( P! i
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
    2 K) y* m# D* u
  3. if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
    0 S( w9 q0 u: {% J4 R1 v- o2 S1 A- ~
  4. system_error('request_tainting');
    # i5 h/ s  j1 i0 A. K, P7 ?7 B9 x1 v
  5. }& i$ O, p, K- ~) @+ U
  6. return true;$ N9 ^8 [* ~7 A7 _% ?8 j. ?% P
  7. }
复制代码
* V& Y: s% A& P
4 }8 r# y! e. F( H
1 U/ E7 \, a- {$ x
# j5 ^, u' C; \: w9 ~  V" o

4 i2 t9 a: ~( h) t
微信图片_20230607014029.png
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
快速回复 返回顶部 返回列表