故障描述:
5 S- Y# @) E# |& g+ _0 B7 G退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
. q. [4 j5 W' w' G1 y1 U" w7 n: n解决方法:
t) G) L' v$ f8 ]0 e
打开 sourceclassdiscuzdiscuz_application.php 文件
( C. X% B. r ?8 f& {: N& ]0 R1 m找到
3 _ @- N+ ~& ?private function _xss_check() {
& i$ V' Q7 |! v1 B7 z8 T
) F; i# s' A2 h6 Z. p
static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
9 |0 X1 t1 `$ H& r- U0 u8 w$ y: t1 B+ _! l- S
if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
2 k& t ^/ Y* m: ]- U! u system_error('request_tainting');
$ n% C2 Y7 f. V( @/ C }
: I$ p M% w! ?* D3 Y
9 `! ~+ B* J4 N8 L& F
if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
. `, ]7 _& o3 z
$temp = $_SERVER['REQUEST_URI'];
7 ?: N6 q+ i% j# J1 N: K } elseif(empty ($_GET['formhash'])) {
3 c5 O* g- y/ I' ~/ j
$temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
! q4 s' ]* h0 D7 W } else {
. {8 s& O; v) U* ?# g $temp = '';
2 s& P# e4 n" S% J$ Y6 Q
}
9 I9 z d* z; w5 p r
' T: m% M# A6 v, {0 H, M4 S
if(!empty($temp)) {
; ?3 M H( \8 `2 x; D6 S
$temp = strtoupper(urldecode(urldecode($temp)));
3 C1 T$ \0 L$ B
foreach ($check as $str) {
E: Y+ O# E7 ~. G+ G9 T( |' W
if(strpos($temp, $str) !== false) {
; P7 Q1 \9 q4 ]3 B
system_error('request_tainting');
+ i9 Q/ [/ ]$ g# K. p2 n }
7 P5 z2 h: ~7 p }
! L% a) G [4 O- C4 |! r6 g& P# j
}
/ l4 }1 q' @* a/ W
! E2 w _% `! D; s* o! z U return true;
7 G; u1 b, v, g- F) O8 P' o}
) a) |% u5 ^- o: p
修改为
( y8 b) L8 g' n2 ~2 hprivate function _xss_check() {
* ^% y! o& z( G J7 W* N
$temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
+ q: O: }5 j8 t( N) `9 K5 ~ if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
0 ~7 M" P6 E/ U5 @. ~ system_error('request_tainting');
3 E1 {8 d) W* u
}
6 B J' }) X; j1 V7 U
return true;
$ v- v X5 ?; [/ T7 Z, q# W4 y: e: ?}
& E" o2 Q, J0 n R& C/ A