故障描述:
: p4 y% J( j7 M$ M; \/ q* _# o
退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
v; D% p5 h% D解决方法:
1 {2 o6 U, a( t2 M" @5 I4 m, D2 E打开 sourceclassdiscuzdiscuz_application.php 文件
/ V( c% [0 J2 _7 ?9 p6 F找到
8 C3 K7 V# u4 y* w3 N! g/ {private function _xss_check() {
! ~& I4 c j$ ?8 I& `3 ?* [% s
+ ^2 }4 p H, R1 `$ y$ a static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
5 z8 f- B8 L! x' c4 B
! m2 A6 @) `; z; m+ E; |$ A( e if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
* \# g7 ~* s; j$ S p. f" H/ H0 P4 h
system_error('request_tainting');
( G! o2 m; _( r+ Y" t
}
3 W: |+ q! ~( _. j5 b5 s+ i/ r) r8 \/ @: x
if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
- E' M! _5 x- d $temp = $_SERVER['REQUEST_URI'];
* x- Y u8 B/ P2 {, Q5 s- Q4 f
} elseif(empty ($_GET['formhash'])) {
) h! ?' ?$ z. f$ K' o
$temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
! \; G! c4 z0 y1 ]/ p
} else {
& L9 `6 B3 ~# V) g- O( U! C" q9 q8 }7 J $temp = '';
/ G8 E- u- z; a( S+ e; P
}
7 S* ~) M- S2 s0 t. A
' h; w9 |: v& c! Q if(!empty($temp)) {
2 v: Z/ G- B; K( v
$temp = strtoupper(urldecode(urldecode($temp)));
. a' @: x( Y( S: R/ d4 A foreach ($check as $str) {
2 H; d% b$ {3 ~2 M, _
if(strpos($temp, $str) !== false) {
# u" [1 }- b! r9 @( R
system_error('request_tainting');
! ^: u! Y+ o8 s; u5 m, Y }
# c& W6 L3 u" n" w5 K4 A }
' y! a: w8 M. W3 b }
. q2 W4 _( K [0 Y3 C1 i! E/ f! o% }
' o7 j' R/ Z, T2 Q: I
return true;
+ @1 t1 y, ]$ A}
0 O# @( H6 v* r' @9 S( W
修改为
3 |* P/ i n! t6 W- I
private function _xss_check() {
. ]+ r* q. a6 u- b
$temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
2 T4 K9 Z! I' Y: n5 T* s if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
* t# D2 q( ^6 i$ w
system_error('request_tainting');
; C. Z' E: h3 d' L' g) s }
- b6 D8 ^0 O7 k( B# ?
return true;
+ ~$ [+ I% I Z+ O' U}
. P! d* Y3 H/ C' B* a" D+ a5 p' C