故障描述:
- r! e( v$ B1 z( Y+ Q, L! _
退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
0 \- S' a0 H/ Z& w/ ^; f' u解决方法:
5 |7 l# c c1 u3 E. U J+ f
打开 sourceclassdiscuzdiscuz_application.php 文件
# D% k7 Y# c t, Z6 p* w1 i) E找到
. f6 j( x; X) _& S2 K
private function _xss_check() {
7 a% @0 }% _9 c. ?$ y A( _5 |. i# z( ] S) ?- r
static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
, g4 q3 M* l' B6 y9 i' a5 e$ C- l2 L: a/ P, b8 \- s& C0 ^5 l
if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
- J0 N" V6 q, V9 j) A( W system_error('request_tainting');
9 a5 y" ?6 W2 i8 o L3 h }
2 o9 G. D4 `' S7 Y% D; ]( U7 h# _2 t
- @2 d/ h6 U. l' Z* x) f if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
7 y' c6 V/ P& ^0 m- p8 l& t$ m z $temp = $_SERVER['REQUEST_URI'];
' H* r8 M" I* ] } elseif(empty ($_GET['formhash'])) {
* z& u+ d) Z( _0 Q6 H# k $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
4 M0 z( ?: r5 a& O) F
} else {
( ~% x: L" E, T& F1 {% L
$temp = '';
* _# b$ A3 y% H5 y! c& f) \
}
6 H3 a" N. S- u
/ S: I$ ^) f8 Q7 N if(!empty($temp)) {
! K3 |) O# j+ T9 P4 Y" M% J; z $temp = strtoupper(urldecode(urldecode($temp)));
3 B5 s; p4 h' z7 B+ `4 L foreach ($check as $str) {
- w4 S% d. X8 h if(strpos($temp, $str) !== false) {
# c& @5 j! g6 F, ?3 U system_error('request_tainting');
$ W1 v2 j% H; ?8 O& S }
3 t% n1 L2 T& k. w' b, h( K
}
8 Q3 }7 A: E Z4 C4 T" u* N' b. x4 _ }
& v; f% I' g, D. Z2 v1 p* x9 j# h* J. f
return true;
3 T2 k4 `8 f4 f8 @- K9 k% q
}
: }, J& F2 c4 i1 u) s2 x/ s; G
修改为
2 z5 y* I7 A& ^ vprivate function _xss_check() {
! ?, a/ l. B0 l2 L* O6 n $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
0 \& _4 q8 O* X' U/ Z1 h: p if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
* m# e" _) q! r$ N0 f& C6 t
system_error('request_tainting');
4 [* B8 N0 `$ t2 Y) A
}
! ^6 K* L: e( Z3 l4 m8 O5 | return true;
& F4 b0 \* I+ B3 @. N, H}
- _+ U/ `2 c2 d