故障描述:
: }1 ?8 L E& {退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
" s( P! G$ l0 Z6 }5 b解决方法:
+ o4 T6 X" Z" i. q
打开 sourceclassdiscuzdiscuz_application.php 文件
& c3 y* `# j" \3 t6 t找到
2 L# o3 q9 q" w, Q2 k/ A% T
private function _xss_check() {
" t% E1 Q: C1 {2 S5 p# a+ ^( j
9 j" q5 r& p, v
static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
% h8 D+ i$ S$ F
+ c! ~, G* ^. x0 V5 Q if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
$ o& e; h0 }( S3 l system_error('request_tainting');
: W z I$ @: U' K1 p& J; d }
& h& o) e3 ]" a _1 W/ H+ {8 `
, f, B, o! v/ M3 I& }, s' _. i
if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
) m0 a* E6 |& h6 p, R; j $temp = $_SERVER['REQUEST_URI'];
0 B+ W' L9 [4 z0 t7 ^
} elseif(empty ($_GET['formhash'])) {
) h& C, A) J" d
$temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
6 `& s2 [, X5 G4 O; M } else {
: G2 p' F. C- {# R $temp = '';
* m: W% B5 p% Q
}
) O, W1 k% H: M2 y7 |; u2 F7 W: }: ]
if(!empty($temp)) {
8 M+ z- y" |, C) Q $temp = strtoupper(urldecode(urldecode($temp)));
* J) N5 s& ~6 x0 e
foreach ($check as $str) {
+ A% W: R' }7 Q1 K* o
if(strpos($temp, $str) !== false) {
) W0 O/ h# B7 F+ V system_error('request_tainting');
0 M' }) D4 Y. n' ^, d* ]4 a }
/ n3 ^' O6 X# _( N7 y
}
$ h- N$ f" x, D4 N7 {1 e5 F3 }( f
}
9 W7 o; ~7 ], |1 T. G
" R2 D2 l2 D7 A/ `0 C
return true;
$ V: i8 ^$ f K5 z! X}
6 t# y, q! r! Y2 j
修改为
$ R% d: G- @3 J0 g, n! f
private function _xss_check() {
" L! e+ D' q# P9 a$ o( g" V1 M $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
q; M: G3 J' r7 C5 i
if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
7 _5 Z+ k( ~8 ?* y9 } system_error('request_tainting');
$ s6 m2 l8 N) w; I& f }
; _/ h( D( Z! K8 O- W. P
return true;
! H) R" m% ` Y, S! a2 x/ e2 c) E3 Z
}
2 d' n; G! @, u: G7 g2 ?5 U