故障描述:
" D$ v# s$ i* E# U2 V, Q
退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
; f6 U& B& o% @6 i) F R4 J9 W- f
解决方法:
+ O' _+ S3 R& f! o! {4 N2 n打开 sourceclassdiscuzdiscuz_application.php 文件
$ u6 t( A, [- @) D: `2 C
找到
1 |$ z9 k. r Z+ C) J+ m( E6 y# x
private function _xss_check() {
) f* p% v6 L/ ^/ G
0 K7 }! N' f9 m* } static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
8 G9 A# h# Q5 s8 H
# M: h3 {& U5 K0 |" o
if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
" \( _# l. ~5 }- G. y0 W' R
system_error('request_tainting');
* ]- ^0 h0 o1 ^' E! F; P2 D
}
4 _7 q: V: w& Z; ^
- O3 @( A4 p: d' w1 d if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
- f- k7 e! m! ^% Y8 N: I5 ] $temp = $_SERVER['REQUEST_URI'];
3 L7 j2 v& ~! ^: }: ^( L/ r } elseif(empty ($_GET['formhash'])) {
M3 z, Y% c' s $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
+ Z; X% P2 H2 K- O( I! t9 b: C } else {
$ L- {1 A5 A+ y, U' ^
$temp = '';
+ ^% |3 l. v0 ?4 J. D }
; @+ Y! s) ^, |+ l0 R
* f! `" H- T @. q if(!empty($temp)) {
A% M, e3 C! I, M
$temp = strtoupper(urldecode(urldecode($temp)));
3 O& E* J7 l% n5 j foreach ($check as $str) {
: a6 c- r" u- V! q; a4 ^; G if(strpos($temp, $str) !== false) {
2 a/ C" a. N* h5 }$ v, ~! ?
system_error('request_tainting');
3 R* C Q( d$ E' l
}
! ^% r, `6 F8 w1 l# O
}
7 [" @5 F! t3 x$ x/ D; w* ] }
8 Q: } i! R& @( A( i* s& k5 }) p- n+ f, @
return true;
9 i6 L! d8 X: I0 n4 h& k0 F5 E}
' U V7 I5 V6 Q; c修改为
8 J- X! E8 V9 o8 } \9 _* Tprivate function _xss_check() {
9 h4 N- F' r1 y1 J9 _* e, T. ^! [& ?. N
$temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
5 _2 a! e, Z" C& u9 K# R& u
if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
1 P. S4 O' m& J9 k system_error('request_tainting');
4 w: i& R( A" l e7 o
}
4 l" ~2 \0 v* W6 }2 e return true;
! H4 h7 [3 v/ M}
7 q2 ^* e0 i7 b