故障描述:
* |; h0 Z4 |. ?# e
退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
, k1 o3 J* t# e z/ W
解决方法:
1 y6 ]" H' g) r. K- c6 ~
打开 sourceclassdiscuzdiscuz_application.php 文件
# _7 r1 S3 e0 ?2 f# t0 |6 }2 D找到
: l1 E9 h+ _2 P/ n& Cprivate function _xss_check() {
0 W1 K3 _6 ]+ n$ Y+ Q, [7 s+ \( h4 B) m4 K. Q4 \8 f* W1 K* Q
static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
+ X. R/ [+ N% y" L" [% R' F: s6 n9 i
# }0 d/ }# e. @ k+ W2 e5 A
if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
2 d& n% J" I7 O) @) D
system_error('request_tainting');
6 p) F$ x1 k4 { T# x. V }
6 d/ N7 F0 }1 P1 g7 G
% q9 `$ A; a9 k- s4 F
if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
3 Z5 \2 Y, G2 g7 Y& m! z- X$ u $temp = $_SERVER['REQUEST_URI'];
: C" P/ J& f1 v- Y0 _ } elseif(empty ($_GET['formhash'])) {
) N2 P' Z) G8 O8 I3 I $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
* O2 z9 O' S. R, `3 r9 N' u2 ? } else {
) L* P& p' Y. ], b6 E' [# L2 j $temp = '';
" A- _7 y# i3 H# }$ q3 v% u6 @ }
6 V7 ?% ~+ O' D- u: Z" ]1 A6 P" r
) A5 C3 p! j! C" i) B) B, V
if(!empty($temp)) {
, j% d: ~! F8 Z4 v8 V9 D; c
$temp = strtoupper(urldecode(urldecode($temp)));
7 \8 X# H" d: s ?; _
foreach ($check as $str) {
/ o3 G9 E1 K$ p9 z6 ~3 e
if(strpos($temp, $str) !== false) {
, O+ f0 j! m2 M. N* ^/ L' k system_error('request_tainting');
! _: R8 R1 c& K7 D/ D; q; w$ b }
0 y! O! c9 f/ u0 d9 t: i- }( d2 E
}
- N+ [7 e* w$ v$ e) c( M
}
, M4 K5 T; T7 \/ n: b4 i/ F1 D3 E. f! x9 z: o% }
return true;
& n4 N. W# x3 q}
# w6 l, M9 R/ {9 G8 ]8 ?修改为
* v+ }% z7 r' F3 Z/ O, ~( E
private function _xss_check() {
; b7 u: a7 e; S( V+ Y* E4 E
$temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
. o5 y- A/ u+ s- i5 N& q/ Y) S if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
2 P" G+ k5 l% k! Y
system_error('request_tainting');
5 J# z$ V4 N' N ?
}
" f. C0 J4 g' Z% O; o: D return true;
$ a0 `$ r4 v, t1 p}
& U0 f- p: y9 C3 u* b9 b