故障描述:
7 H; K5 h' c' t @0 E退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
) }5 p. g! R/ `) k2 u5 ?+ r( U解决方法:
N% Z: t: v# f5 a) ~; z打开 sourceclassdiscuzdiscuz_application.php 文件
0 a" ]' G. s8 y4 B5 V' x找到
t2 I7 o% j3 K) x; `6 _4 V/ _( |' ^private function _xss_check() {
5 Z @6 R7 o# q% l0 v6 b
/ E+ m4 \1 o, {* i: k, C
static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
; z) [# T- F" q/ \
$ Q8 F/ l& q" i% D1 J$ U/ x; |7 t if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
# V# O6 \$ V2 a: D system_error('request_tainting');
$ H8 j: O* p4 a' I7 m% D
}
- T/ @) D8 D' T+ x/ Q& k# n' e
if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
5 |. U- {% \9 m, i% q' ]* }4 s
$temp = $_SERVER['REQUEST_URI'];
0 Y" h% x7 { G1 m; S! u } elseif(empty ($_GET['formhash'])) {
) V1 x5 {0 D+ y3 [ $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
9 {2 s9 A& f: `' s7 f. p/ R4 D } else {
& C1 C* [: m2 L: W0 a# ]9 [ $temp = '';
4 g c U$ _: t% R8 P! o3 j, S }
( p* _8 G1 `# P( U
' n+ i4 ?& Y7 ]+ L' A
if(!empty($temp)) {
8 _2 N, \1 {0 y4 p' {# J $temp = strtoupper(urldecode(urldecode($temp)));
/ K. W; X3 ~; e: m: z. E- b
foreach ($check as $str) {
o) T# H5 ]! @& c" o
if(strpos($temp, $str) !== false) {
# F1 }' b0 F0 F3 G
system_error('request_tainting');
6 f% Y% y, t3 g; h
}
1 {% q& d. E) M& a, o5 l. T }
4 B5 h5 s& y* x' c( O$ g4 P$ \
}
7 r7 s* A" Y; m2 P( B* r1 y( g+ @: n; h8 C/ k
return true;
/ x5 N) q6 O0 M z. Q3 b; c% I& Z
}
5 p1 p, z j, J% F8 r- |. E修改为
- j! @. z) u: \ u" }private function _xss_check() {
. i. Z/ i" u. z$ e& Z6 U
$temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
9 l/ x- v' f" @! q% V
if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
U) O6 w, X& L" A' A
system_error('request_tainting');
2 }9 R- H) C1 Q& @6 ?6 r3 z K }
/ B; z' T" @! f return true;
0 C+ O" P" C& M}
5 W$ A7 Q& ^1 E) m