故障描述:
4 \, z/ x- H3 c$ s- W) Z退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
. `3 s7 o4 p* b
解决方法:
# Y% @* R. w$ c: C打开 sourceclassdiscuzdiscuz_application.php 文件
: @* C' `! u6 ?: a6 ^! v
找到
2 Z' V- V' \/ n9 D8 Tprivate function _xss_check() {
6 X1 s5 I; q8 D: t- G6 ?$ i% R
' B0 z! A5 Y" I. Y* F5 e/ t; x static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
! z L6 |: } M( ~( O
8 X& a; ]7 O. X. C9 }0 }+ E if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
- D" Z* d$ A7 s& h' }- V+ M system_error('request_tainting');
- o7 q* e$ i$ x. }- `
}
. \& q0 G" p* q) E: | y# {/ F5 `) k# X4 I: J5 r
if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
# T, u4 F& E1 ]5 b% g3 B! ~
$temp = $_SERVER['REQUEST_URI'];
0 d+ F5 T/ G+ r$ \+ G$ K0 G
} elseif(empty ($_GET['formhash'])) {
( x0 a, ?" @7 y& S
$temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
$ J$ r0 o" b% J* ]
} else {
( X/ z, `/ R' c; w$ B( {% o
$temp = '';
5 P3 q7 J# v5 D' H: K }
5 {! W, h% a9 v
7 I1 J, ~4 `3 p) ?! [2 | if(!empty($temp)) {
0 F3 N5 w8 I/ j $temp = strtoupper(urldecode(urldecode($temp)));
3 ~0 r1 n5 M j) { foreach ($check as $str) {
+ y/ ^* Q' u) e0 Q V+ q# J+ `- Q& V if(strpos($temp, $str) !== false) {
j( N0 @ z6 ]4 v system_error('request_tainting');
5 M: Q( ]" R0 j }
3 m9 G! x D$ L% m
}
8 c b2 s5 n# z2 ?; p% H) c
}
. q E3 v4 E/ z: H5 ^/ C! r; {# F5 m0 w
return true;
3 |: M; ]- ]% x6 J% Q7 P
}
( O2 E. m" Z. V6 y* v& N
修改为
* p' _- K: E6 M; B' uprivate function _xss_check() {
% r4 O R$ q( i1 r) d N4 @ $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
- m' ~. r: I$ T
if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
+ `0 V8 x% e% p4 T system_error('request_tainting');
$ `) _* P, x6 I
}
: Z8 A7 B: {) u( C. x return true;
" I. b( ]# A7 B$ R
}
- r- c# \! ~# Q$ j9 L6 ]