故障描述:
9 x) k4 ]& @9 }, i1 K# Y, H3 @退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
& c) {- ?+ z0 ]2 U5 p* Q解决方法:
: o* Q0 |9 h* i, K- h( D1 ^打开 sourceclassdiscuzdiscuz_application.php 文件
! \: s! i! y, \# N+ ]
找到
4 _& E/ m0 H$ x& q9 |( B* ~private function _xss_check() {
# ]! F& q: m% }$ s& r9 j# \% u
' F/ C: o6 y& }/ I9 R. `
static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
# G% \% E0 U& j O' G X% E8 M" p6 Y; ?
if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
, ] Z2 G" `4 p* V; \3 y
system_error('request_tainting');
, `6 t- J) L3 a6 R5 w% Y2 O; s3 l }
8 ~4 }) X$ r/ ]' x$ v! b5 o" h) Y1 |0 r X! r: y
if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
6 A; Q9 k) b) a- [2 k $temp = $_SERVER['REQUEST_URI'];
4 I- f# {. o, m% D; I; v
} elseif(empty ($_GET['formhash'])) {
5 j0 F) J0 g1 k: H) @; d
$temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
. _# R6 q4 f& R } else {
5 [& `% U# {" G3 H! X: ?$ [/ Y $temp = '';
2 N3 X9 A' w1 w) k2 s+ i
}
& g3 O% W5 S1 g$ U5 {
" D' e! d! d- I# ^% Z) v- l! L if(!empty($temp)) {
; p& B# R+ \0 a# M1 p- u $temp = strtoupper(urldecode(urldecode($temp)));
9 U2 W. e' P- w; g/ l% k
foreach ($check as $str) {
, s3 C) c! b0 c1 B O
if(strpos($temp, $str) !== false) {
' e6 j% ~4 N$ j- ?- z& C/ I' x
system_error('request_tainting');
9 N2 g2 w8 h2 s! M" l1 Z& } }
& f* P2 Z: ?" B8 ^8 B+ e }
$ a# j& N. b H! {0 Q" I/ E
}
* |3 {2 Y, w5 l1 o$ r! u& D* |, G1 d
0 c" S p) }& N$ T; g! o7 ?7 l
return true;
) V5 r9 X# O" h" G* Z% }5 r* f
}
, ^$ C2 B1 G: B' N修改为
; {9 ~, A+ o" [$ j9 Rprivate function _xss_check() {
+ S( H) m% n; c( ^0 i $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
/ N D6 W; j C4 s3 G1 V T3 a if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
5 v% |# m+ z; R3 b* w& Y+ Y* W6 ]( C
system_error('request_tainting');
2 i% m( g) {: X" \' L9 d ?/ x }
' I. F, ^6 s) W5 H2 I
return true;
# K& n, l/ X0 s7 _8 F2 y; v}
0 C$ R$ ?, u9 b, O8 Z