故障描述:
, s7 ]) X: a2 a5 P5 g" q退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
: X6 d- n" |9 K/ M解决方法:
; i( ^/ e. q& G. N. K* O打开 sourceclassdiscuzdiscuz_application.php 文件
$ v" S9 p+ z; R. U+ Z* _
找到
4 K* H1 l5 X; i( r9 J' \
private function _xss_check() {
$ p. O/ M: i3 k0 T/ I* S
9 p* c9 u9 W5 a+ d4 t- x static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
2 U; N; G0 O5 J
" h) b8 @, `4 ]4 N
if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
* G. n" |! y4 h' m5 G
system_error('request_tainting');
6 Y! U* s" J- q: h9 D3 I1 n }
, J7 G8 J# |5 w2 O6 Q
, v" I; o/ K! e7 S4 x& k if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
& F# h5 l8 N# L) J2 P- [ $temp = $_SERVER['REQUEST_URI'];
7 g) b8 O/ @3 e- r7 L; J } elseif(empty ($_GET['formhash'])) {
5 ? K) W/ g5 I$ w- q4 V' o& B% [
$temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
, m t! \4 ]7 y9 @ q+ [ } else {
z) o* m& _* u1 ~4 ]% K $temp = '';
1 z. D5 c P8 ~0 q- W% N. D
}
4 J1 k- I: D0 }6 Q
4 v, ]" p$ [' P8 E4 N if(!empty($temp)) {
1 T3 E! e% ~) j: \2 ?5 `7 m
$temp = strtoupper(urldecode(urldecode($temp)));
0 I, r- }! l- H# H( S' v" O6 q
foreach ($check as $str) {
$ B0 C5 h" D9 l& P) W" _ O) i if(strpos($temp, $str) !== false) {
6 Y9 a3 w& h( T- G9 I
system_error('request_tainting');
6 \2 f4 l4 Z* n
}
1 V4 N6 _. f' C L) @ R }
. T$ p: @6 g* b ? b4 Y' { }
8 S8 Z$ H2 h3 k6 |5 \3 @8 w- l) G% R# P9 O" J; x, A N
return true;
' c$ G: j7 j7 N, B# J; v}
3 J9 Z8 t/ A* A; v7 V5 Y; R修改为
0 A0 X. J4 N' H6 `& u
private function _xss_check() {
- D( q3 ]7 K! d& k' a& x
$temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
- Z" R& @2 d' L, i9 ~1 `- ?. u$ Z4 a! ` if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
' X/ b+ v4 h8 b9 W( E: d system_error('request_tainting');
% i1 Z$ \2 G! l1 m4 J
}
/ H+ h" V' D: G
return true;
; a' ]* \5 l& v: Y" U P2 v
}
# N$ S f* d% P+ w B3 w3 O; g! I