故障描述:
- E. M( h6 N7 n8 H
退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
7 f+ m3 i' o, d解决方法:
1 _% u! a( m2 m6 V. Q) D$ P% B
打开 sourceclassdiscuzdiscuz_application.php 文件
2 ]" H9 L6 p$ ]4 Y9 S% Y8 z- g6 {
找到
& f- O& Q6 F# |3 ~' [
private function _xss_check() {
6 k/ W" B x* I8 A$ {5 G% y3 k) H8 u: P9 Y- B" [
static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
0 J( I9 {: v g+ }% i0 Z: b' B) [
if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
' f; t# h$ _) p( C" e system_error('request_tainting');
# E2 l( p; L8 f; {: O" z
}
3 d; j- @$ Z3 W$ m$ Q
( j5 C( b5 L2 H+ F if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
3 t. n, p. Q# k% w) y- J
$temp = $_SERVER['REQUEST_URI'];
, P5 \# K, j4 y3 g8 S
} elseif(empty ($_GET['formhash'])) {
; p5 S( z: W. _6 Z9 ~' {. Z3 v $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
3 I& X* P2 t% `9 ^! ?# C' [/ J) ]
} else {
' |5 ]; H& u: A $temp = '';
) r7 q( J0 A! l; G2 `
}
3 I6 y, y" W7 C0 O/ u
. z- j) k( |) E; Z/ o$ J0 r if(!empty($temp)) {
+ _- T2 ?) Z' ^" t4 W* q $temp = strtoupper(urldecode(urldecode($temp)));
& p& L( r- q) l/ s, r
foreach ($check as $str) {
3 Z# ]# l1 H* c
if(strpos($temp, $str) !== false) {
_" M: S* X$ a. I6 A2 P
system_error('request_tainting');
. p7 j, I, X6 G
}
( E F6 ], n3 D }
" v3 I0 ^6 @8 [( _
}
- J1 G" s/ [* A, I
1 @% h- j3 l+ \( ^ e6 F
return true;
8 b9 F* N; E1 c. p}
; r( A1 p5 W$ t# W V$ t
修改为
- p9 ] |( |# {2 T
private function _xss_check() {
- j/ X8 |) X4 i, B8 V. l+ C7 ? $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
- X1 N- Y3 D; g, }+ D if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
E: N) Q6 x3 B- \' ] b# G* w system_error('request_tainting');
* r+ f( A5 i b }
# l( A+ t' k; B8 `# D& [! f8 C return true;
: d) @% p" ^) y8 D H- Y}
7 k* j/ G: i1 F