故障描述:
" L/ ?( I s, @$ \) _+ J退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
( ~% n, b% G# @# K+ ^解决方法:
; P' w& A9 q+ F+ |* n6 |, h
打开 sourceclassdiscuzdiscuz_application.php 文件
5 X+ a6 {) T) M& d- n! B, K5 }
找到
9 y9 L1 Q" U& R J% y C% h0 z7 nprivate function _xss_check() {
$ D" W; f0 P5 q! K% r
' _& \" k8 Y2 g4 M7 B
static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
+ b% P* s5 t5 X& T: y; `9 w A% f7 r, _% D5 ?+ b
if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
/ N. h7 K/ C+ ?; `5 {- ~; S system_error('request_tainting');
8 O6 L) c% ]0 @2 a }
( B/ @- m3 A% J. Q) p
; W5 G. O7 r n; K if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
) e) `. w( k! }9 {& d- P. S $temp = $_SERVER['REQUEST_URI'];
/ p2 {# O" I' m% ]6 A4 q } elseif(empty ($_GET['formhash'])) {
) P+ [) X2 |3 ]; ~" {8 K' o $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
" b% J8 ~! |1 m a5 s } else {
: y' Q- B+ `3 u; D8 v1 ^: _
$temp = '';
) ]4 E+ `) t4 e8 ]$ T }
' l2 ]- @% J3 n6 y1 G z: l: q4 K/ s1 J2 J& x8 j U: U7 U
if(!empty($temp)) {
. B% F6 a/ Y. C$ Q) \2 c
$temp = strtoupper(urldecode(urldecode($temp)));
/ c4 ^+ u& p0 y: \8 p foreach ($check as $str) {
0 A9 n1 g$ ^& D' K( y+ w# `
if(strpos($temp, $str) !== false) {
8 W! r4 O$ V2 C- b- E system_error('request_tainting');
' a3 t) J3 \- T' V
}
* b8 O8 Z9 e+ G! D- A: o% c7 b
}
5 V6 j4 F% w0 B4 ~* _/ Y }
3 i$ n+ ~# p+ ?- t. D0 S& o3 ^9 g. y/ `/ g+ R6 E* U& U
return true;
2 ~! {5 A# |! b! q}
( `5 W$ [& M) }8 ?* t4 U, r1 K
修改为
; @8 A$ @8 z' ?$ a3 _private function _xss_check() {
' j4 D) K/ n0 L# n3 ?* p4 F
$temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
+ x" x9 x5 w7 b
if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
3 S+ c8 |5 l- C; y& i, M+ q system_error('request_tainting');
5 \$ R% q2 h+ x
}
# |8 ]3 ^+ A$ f$ z9 d9 \2 Q
return true;
9 g7 ~2 r1 [, j6 v# l% C}
+ a4 ?' t# }. w+ H9 U