故障描述:
2 T/ b% z4 N6 R/ P2 L/ |# J) ~2 r
退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
+ r: x4 X. o7 u" s& |8 ^! r+ G. [解决方法:
6 U4 y8 n! T: }; l. k/ E3 C4 |
打开 sourceclassdiscuzdiscuz_application.php 文件
. u# e, X; u$ t
找到
8 D& p9 a6 p' ?1 o X& xprivate function _xss_check() {
- ^ J0 {5 z2 F" U" S4 b
# O$ f" I* }5 r* ?' N
static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
1 m$ E# V2 Y( y# l7 [7 ^
: M% ]! i7 l% Q* Q2 p% d# x if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
* h6 L- V! Q4 {5 M9 [' [
system_error('request_tainting');
/ ?1 C% \" m4 r3 Y }
. M. M2 X1 Y. E2 J& O
, O2 H3 M$ }, R5 g9 X
if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
/ S; x3 ^% f* {. Z; k, W( N
$temp = $_SERVER['REQUEST_URI'];
4 a6 J; X; g# V+ b+ u5 j. S0 `' m. G } elseif(empty ($_GET['formhash'])) {
$ G9 E2 B: x8 A4 B0 H p $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
. a* C" ~2 X# b$ k7 Q4 U
} else {
7 \3 H8 s+ h, u
$temp = '';
) o- l& C# q: z4 u$ A- F" l3 j L }
1 }- @% o0 N! i/ P2 g W* u- Q
if(!empty($temp)) {
! k3 }+ S. m8 A9 m0 @* [( j! v $temp = strtoupper(urldecode(urldecode($temp)));
0 A: J, f4 q) a+ Z6 J- s foreach ($check as $str) {
" _( J. }7 n3 f. H if(strpos($temp, $str) !== false) {
K6 H. i" m+ E! `; o% E
system_error('request_tainting');
1 g/ P' [, a R0 ?$ c7 n
}
& b: V" M$ R/ | }
* ~. j# f, @$ q0 w. s2 c1 @ }
8 h/ X0 \( S5 v9 {: ~; d
7 f% |6 I& o. @# D1 R return true;
3 E8 ~4 e; K% S- I5 a5 B& v; |}
; f# g! S) O* C1 D$ b
修改为
- g5 f) T0 \& p) H9 ?9 B3 n% N
private function _xss_check() {
& G: M# v2 U8 I8 n. ~
$temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
k' @% e: R+ [5 s
if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
# g5 _- e; O# w& g! _ system_error('request_tainting');
2 T' i6 r" |. T* J) ?8 c# B$ K0 u }
/ c/ E7 ]( L# b2 D3 E" M6 K$ ~* G7 r
return true;
7 D, k5 P: [( x
}
* N' \8 q+ b' A% p" T