故障描述:
, V1 ^+ M; j& k& k! N3 p
退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
- l6 K3 v6 _! G o+ w
解决方法:
^7 h/ l! G3 ~5 R9 E) K打开 sourceclassdiscuzdiscuz_application.php 文件
: v* l! f: k% Y2 {1 u2 Q
找到
- ], F- W K( P0 @% q rprivate function _xss_check() {
- n) X, n! u" f1 E* |7 u
9 z% D. d6 u+ V* ^/ J; x) M
static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
* v) B0 P" ]$ r2 i8 T! W3 C8 ~8 h1 ?8 \( T. G# ] {
if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
) ]( A% q) e7 ]) A. a; L system_error('request_tainting');
; P7 H" C4 \; I$ r" i7 a }
7 h5 A8 N9 K. {7 f6 L
. L. a, e" L, a9 n$ s if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
0 T7 u. f# [7 W0 f2 R; p6 T. Z $temp = $_SERVER['REQUEST_URI'];
$ a, @; y% j/ ?* F9 W
} elseif(empty ($_GET['formhash'])) {
7 I# R1 p4 [( J8 O! |! J U4 i: } $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
: i, A! Z- I$ c, W8 ~! H } else {
! _* u5 r5 R6 |9 [4 e/ ` $temp = '';
: S. e/ _5 M9 g9 ?
}
9 K1 V4 m! Z0 L" Y% m( A
2 N* ]# M$ B I6 n) B5 U if(!empty($temp)) {
7 V0 z" C: ~& `& A/ ^ $temp = strtoupper(urldecode(urldecode($temp)));
2 O. b4 R; a* K( w% m foreach ($check as $str) {
9 o/ `$ S2 B+ u: t if(strpos($temp, $str) !== false) {
: e+ o* T* |7 s% v0 J* r
system_error('request_tainting');
2 L% V$ I: b* I. K+ t' Y# d' ^
}
: c3 w. V0 n5 D" z8 I }
8 Z, }7 D4 ~* F6 K
}
7 k' U) v7 ]& q) N6 t' @2 D/ `8 C6 s% ~8 H
return true;
& d. C( B! c6 t: h: B3 p2 t% G}
& o; C! I, g/ r1 w b6 b: j
修改为
) z3 \( @- |9 C" Q9 wprivate function _xss_check() {
2 N# T8 }1 o- Q( s7 V' R8 Z0 U $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
/ F9 v3 [! E9 C$ ?) c3 w3 E* ` if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
; B/ {" N% s5 x/ V& @3 m system_error('request_tainting');
/ h( ~" L" P$ G) t. S* ]6 I- ] H. l }
, F% ~8 K1 r' `+ A2 h0 B- j; e9 ]
return true;
& @" ~' T" e& M- [# E$ ]}
6 J- _( `3 h4 ^2 F4 R