故障描述:
; R K: i. J% ^) f' M+ U
退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
& ~" B* k3 M3 h6 x解决方法:
7 l: V1 h4 e( M& V+ s% Q( i7 w
打开 sourceclassdiscuzdiscuz_application.php 文件
% e- L5 T# N: [/ V0 `. s8 u' o
找到
6 W$ z% t5 @- Y
private function _xss_check() {
% f9 Y$ x2 o. K! V* A; P. P
! i: z. A8 }3 L" X0 t* u static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
1 |8 A' g4 s# q
" r; n2 A; _9 E+ {1 b7 t
if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
2 o7 h1 a# J. _& v ~" |
system_error('request_tainting');
1 y6 m& ~0 Q! q2 I! L; K, q( j" F }
) Y9 t) _) c2 I. t
( c2 A: L8 G# a$ b) K
if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
! N7 C! i# ~6 o' T& _' u6 N
$temp = $_SERVER['REQUEST_URI'];
, t. G9 ?: ?* P
} elseif(empty ($_GET['formhash'])) {
- N9 T9 o& @# R9 W: S/ g" Z
$temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
0 X8 L; a0 h( N% u' F } else {
V% g- s( Q' B( I
$temp = '';
/ X. V. L; u. U. R7 q5 V2 d3 K
}
1 Z* C' |8 x: _# j, I& a" M) k5 C! ^2 ^/ j" g* r" y
if(!empty($temp)) {
4 q' i# K/ r( q: Y $temp = strtoupper(urldecode(urldecode($temp)));
) A) u/ o, L- K: p# ~5 i- | foreach ($check as $str) {
7 W* @) y4 y6 m. n4 s; ]$ y
if(strpos($temp, $str) !== false) {
* i- U5 K _ y. \ system_error('request_tainting');
. i; f3 Q: |3 E- ?! ~. T8 Y }
1 G' z9 R# J- R8 ~ }
2 U0 ]. r/ w" ^- O
}
$ E5 O2 D: Q3 J2 m
+ W8 x6 F2 D8 w4 ]1 L2 p1 X return true;
" {6 i( j, A9 F& Q, U
}
( X5 R% ]' b2 Z4 y- y6 a+ K* q6 m: [5 V
修改为
& \7 g8 l1 K' D
private function _xss_check() {
) X! R8 Z+ j! L5 J! A& S
$temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
$ T% P) h4 f) U3 l( F; \0 b! J! G
if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
& l# y" H( X; p7 ~5 D9 t system_error('request_tainting');
1 L- {; P9 f5 E8 r# q8 P2 } }
+ D4 u9 _+ z8 H1 }0 o/ F9 M- _
return true;
) M" k" K7 g8 L+ A/ l+ P' {$ V}
9 n6 {; |( A) f