故障描述:
, g' X+ G* Q) E$ ^退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
) k: D$ B# I$ i. `+ H+ P解决方法:
+ o- f$ w) ~* t/ ]打开 sourceclassdiscuzdiscuz_application.php 文件
: D9 a! S6 Q- j! Z9 L- H- [+ X
找到
4 M8 u# m8 E' @8 Jprivate function _xss_check() {
3 W5 R/ E8 m( P4 ^1 ^, V5 Q7 G7 P+ K3 c1 @3 ?4 Q% e6 K/ b3 {7 R
static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
/ d5 ]4 j4 G- j
1 a) w" U% ^, m' Y if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
: l- Z/ M- r9 Z! I# G+ N system_error('request_tainting');
. W U" t/ u% i$ E5 M
}
2 o3 z& O, s; o5 \5 n% l; N0 J; w
if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
& _* y2 i( G1 `' y" N $temp = $_SERVER['REQUEST_URI'];
* _4 c9 @% |8 N3 N* [+ f } elseif(empty ($_GET['formhash'])) {
$ s* o- m0 F0 u7 ~+ O
$temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
0 h% K8 e3 ]+ f0 ^/ F* G2 f: Y, o, T } else {
! B3 ` i- H4 e2 B# z& m' X
$temp = '';
1 d) w4 p( ?7 _! v9 m
}
7 U6 a; j# S9 V/ H% r
, w& Q0 ]: i3 W if(!empty($temp)) {
- Z5 L4 r; o# C, k* y8 t3 d $temp = strtoupper(urldecode(urldecode($temp)));
9 E U' Q3 i) z, w foreach ($check as $str) {
4 j4 c" Q9 }& R
if(strpos($temp, $str) !== false) {
8 f/ I5 m8 O6 O5 q) l7 I% \
system_error('request_tainting');
1 C1 N u" `/ @0 C6 f
}
+ ?5 L& P% b0 x v: L9 l3 N }
( l. X. _" j5 W; j# R; c, d }
; {6 \$ S; d2 M' L. ~! ^/ |7 p3 K8 ^
3 H" E A( b; ~! r) x( T( x return true;
0 u9 A, M( g& ?; V+ J. [
}
+ P) J' M% d, G( x
修改为
2 M; j5 v; t0 ~, K. ~. ?7 P uprivate function _xss_check() {
1 o n$ H9 q. l+ p; H
$temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
5 r1 o% C6 E5 `+ \- v& T$ k& l8 O if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
. `" h0 p/ X7 e* u, P# B system_error('request_tainting');
, C. t8 D! |) B D- T5 c h }
8 F4 B% G2 `2 p! W+ I0 Q& K6 i
return true;
& l& O$ R3 |) Q}
* `- J5 i/ b. N