故障描述:
/ j- z- k5 ~- h& d退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
! r( t, [8 C9 G4 s5 k$ |) T- k5 G! A解决方法:
) f3 k5 R. t8 t) T
打开 sourceclassdiscuzdiscuz_application.php 文件
1 ~8 K8 Q' _; Q+ l8 M( }
找到
& e7 O7 j. f% w" {$ d* [
private function _xss_check() {
- X4 {) M, r1 g1 P( l" }# `& t4 L+ D; o
. P/ m9 u% v" x6 v+ ^ static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
1 i: C1 O; Y5 q! L1 d
# Q, g- k9 D! [7 f+ `, n
if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
2 C( H q, `; z& U system_error('request_tainting');
% S' o/ E" A/ _8 q$ ~
}
$ E+ A- O% z% j$ g/ q8 o# v
. F& X' f5 J. w4 h% X* ]: ?. V
if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
1 H! y; k0 S. i4 M $temp = $_SERVER['REQUEST_URI'];
: d0 N4 I/ e+ Z, ?% R' m
} elseif(empty ($_GET['formhash'])) {
s( r/ _# L2 O9 Q$ ^9 D7 W $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
/ d" x3 r1 }8 I" b } else {
! z7 F6 }6 G% Z, m9 Y) e $temp = '';
, X, R& |2 Z( l
}
2 k [: S) p3 k( z! {5 \2 A# U
# c1 o" u4 u$ \0 H% d. g- R if(!empty($temp)) {
4 f, n7 l- ? j% `- [ $temp = strtoupper(urldecode(urldecode($temp)));
$ U$ M" s$ @1 a6 ?
foreach ($check as $str) {
$ j: g X7 d/ ]6 q) b9 H% `
if(strpos($temp, $str) !== false) {
+ a) x+ w% ?. H5 d8 s9 H; m system_error('request_tainting');
4 P R ~0 t; \( i0 k% [
}
& D2 P8 }8 ?: T/ \ }
+ Y- x0 u1 X6 U4 b
}
1 P1 T6 F* f* B/ |3 ?- R) i' j2 w% c. V/ }* ]/ c* ?
return true;
( Y! d. o0 s" c. e) U! Z
}
* G. T0 @7 P- T# ^ n5 _$ q3 O4 p
修改为
2 f( ?3 E4 w) a b# ]. A' o8 t
private function _xss_check() {
1 C4 Q% m$ C7 ` $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
0 T4 n O1 |7 l8 O" c if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
' z1 G5 t% g" O$ _& T0 S
system_error('request_tainting');
6 j7 R! q5 E4 Q4 i
}
+ U5 R/ p* p2 o' q) r! j& o; L1 D* c return true;
l( B& A. j4 V' Q: ?}
) j7 `+ r" o# X. U9 N' a: ]: Q