故障描述:
) o% ~3 T5 M( f7 b, z& a z* o退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
4 ?! H4 z0 g$ H7 ]/ Y
解决方法:
% |& N! J) h3 T+ X打开 sourceclassdiscuzdiscuz_application.php 文件
4 N9 y; H1 |) G, U* e找到
6 }. _5 y G2 } _9 Q1 bprivate function _xss_check() {
# y1 C' p6 V/ [! L& ^( d
& I6 l0 v( \4 ]4 w
static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
" F5 g- O. ~7 `( _- A; A: F+ A& q& l7 x& `- y* W
if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
$ j o' W8 q3 f D- L! ], X
system_error('request_tainting');
2 _0 k" w, K6 ?% E
}
" \0 \, m1 _: w+ ~* G( c7 ~: D
& c( c0 a. c9 x! ` C7 n: i l
if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
9 U, y+ c, f1 ]" D $temp = $_SERVER['REQUEST_URI'];
3 j# o0 l6 M9 C) Z+ j Z( r
} elseif(empty ($_GET['formhash'])) {
- f5 {; s& d: o* J0 U
$temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
3 X5 v6 ?# S8 \$ K0 D, }8 v' \ } else {
2 K U1 }) }% O5 A" V $temp = '';
8 [: m Y* Y% b
}
/ D, u. I+ h1 P) `, k* X7 K$ X1 w$ a5 n/ z+ r. k6 J8 N
if(!empty($temp)) {
6 w: j9 y$ x3 @1 m! ]3 h# U. y $temp = strtoupper(urldecode(urldecode($temp)));
8 W3 D# V, U$ P+ n7 q- ?
foreach ($check as $str) {
9 F: C" P% u9 D3 F4 e5 l5 C! M if(strpos($temp, $str) !== false) {
, _/ |# }$ D7 E! ` system_error('request_tainting');
) u7 {. d! p( `$ m' b1 u }
6 l8 N: \& s0 {" y& I6 l; P5 {: [6 Y
}
) v# Q4 ~2 g+ c, \6 S' g+ m* P }
/ _+ K6 Y% t! i; ?9 T- Y5 f2 g
# I9 `' ?2 l* `/ K
return true;
4 ^7 U) b" y0 P5 _}
8 g; l |8 o2 N& [! t- p! [
修改为
. c+ Q$ w6 o; U9 j! N4 Zprivate function _xss_check() {
' y8 S% M- ?! w; `. k& y $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
2 O- m, H. z0 q* L' l" ]
if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
1 Y3 a: w) w* ]4 O/ H/ _$ C
system_error('request_tainting');
, X6 y* y; P. i9 D" e' `
}
1 t0 F% G, `5 D return true;
2 z6 d( ^4 C9 t7 T' q1 q; w. E}
/ r7 S9 J7 @0 J/ G* f: L, y$ m3 H