故障描述:
6 X$ v% F: R0 }) o" G5 S退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
3 ]9 T1 W* y! Q8 [ o
解决方法:
. E% n, }& a7 Q3 |1 o: l
打开 sourceclassdiscuzdiscuz_application.php 文件
; D1 S3 a3 o. a- z3 H9 f4 l
找到
5 I! |" _& J* R) i4 ?8 H$ Z
private function _xss_check() {
7 Q. {1 i- s1 }. B: _% r2 u
5 j5 ?5 S: J% M static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
' \( S6 }: Q! j4 D
0 X3 `6 v( o5 G+ ^- X- x if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
* L* t( Z2 |7 N7 J3 v, Z system_error('request_tainting');
9 u4 ]$ m4 V$ ?& u7 f1 ]; j+ l
}
8 g1 e' O5 X l) P2 D* N T4 w [1 R, o( D6 U$ l
if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
* r8 @/ ~. p4 F8 c, a5 y# | $temp = $_SERVER['REQUEST_URI'];
7 Q- c" K2 _& t% V/ C M$ j } elseif(empty ($_GET['formhash'])) {
( r2 C1 G6 Q( z' a: n5 w6 m $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
2 K! I9 A" F3 R3 M1 t+ y } else {
# M- e x7 K- {9 ^! e( g. x: f8 } $temp = '';
7 A& |3 ~! n; d
}
0 D f) \) W, C
( o U6 ]+ N f if(!empty($temp)) {
% w' b0 s8 u+ z# e3 |2 K
$temp = strtoupper(urldecode(urldecode($temp)));
: n! V6 s+ t' Y* V" r4 B* D
foreach ($check as $str) {
7 [, M( i7 l1 a7 C+ V* u. `- w
if(strpos($temp, $str) !== false) {
8 V# x6 O$ T" }7 ]' B6 @
system_error('request_tainting');
( A6 P: N6 d: _: n9 ? }
, S6 i( d0 E) C/ A }
b+ V- F6 W# f2 T }
5 S$ ~ e4 D R+ [6 y: p9 t# g
+ z V4 w+ c7 E' q9 ?8 j9 o- f return true;
9 y8 a6 Y R9 E7 Y
}
& x1 h& F5 r" u9 p修改为
2 u: A$ S7 s2 `& b* aprivate function _xss_check() {
4 E9 [. M$ L5 R2 p
$temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
9 i4 q, B. [ d. _% [8 H if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
5 b6 |. W! R. [: z1 p6 L system_error('request_tainting');
6 j9 E4 d% c+ Y. ^4 q' Y2 \* |
}
: d9 @& ^5 }: o, L* Q
return true;
9 h- g$ Q, e% N% T* r5 j1 d, p
}
- u3 `! A' Q6 ~& ?8 K