故障描述:
6 S- I0 @. e8 J; R: D, h% H1 P退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
' G7 ]) d5 m" D
解决方法:
( F" y% q1 k2 [1 e
打开 sourceclassdiscuzdiscuz_application.php 文件
. J( t- ~% f! X/ @6 K找到
k# X" j. F u. n8 A" r& F# g
private function _xss_check() {
* V) ^2 F. g3 {
! v E. B I, b! Z static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
2 B! U0 Z3 b* ~2 y9 m9 o
) p* j' ]' v3 V" T: ^
if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
4 |8 t- g/ O, t# S# j: }/ K! S
system_error('request_tainting');
" \. j- q0 a; S% K5 K1 G }
% h7 T# X0 |. s+ _) J f" ?7 @4 W1 N7 P; w1 \* l7 v5 ]" \
if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
& K. G( h M( v H
$temp = $_SERVER['REQUEST_URI'];
+ l) P! ~9 o3 Y: B6 f8 D5 L/ F } elseif(empty ($_GET['formhash'])) {
4 n0 [1 @* `2 n& B2 q( Z. S R $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
7 y3 G$ s9 c4 i2 l1 A1 C } else {
1 m# \7 h" f. ]: A8 N
$temp = '';
! l2 ^ H- ~ j" X }
: `3 L( h2 k# E, c: N& ^8 w4 E4 H- ]5 t# j, Q
if(!empty($temp)) {
7 l9 o0 o l% v7 j $temp = strtoupper(urldecode(urldecode($temp)));
; J# w+ Q1 \4 t+ P2 h0 x0 F foreach ($check as $str) {
9 _/ R& d$ T+ x/ h# l9 t. z if(strpos($temp, $str) !== false) {
$ a$ t) @( _( Z5 T1 f$ E, P
system_error('request_tainting');
2 W! G. P5 _( ^0 `/ c6 k& e# r
}
7 ?4 _; d' d0 `+ I* w' j# {6 p3 R n* E; M }
+ b0 X4 B3 [/ D6 W# d }
3 a1 t/ ~* v5 l: w4 n) E7 E
) K1 o2 @" }; ]( U; ? return true;
* h7 g' M# G, O2 c1 c1 k}
4 r& c# y0 W* t; B+ d- B. E
修改为
' I* L! z' q5 g; G7 D. G3 o
private function _xss_check() {
1 U# |5 I; W S1 J! `, [: j $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
1 }, K+ l* ]0 H# _ b7 Q if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
1 \& j) { e3 h k6 x+ @
system_error('request_tainting');
& z8 {# O8 H/ t4 ]6 M }
, }: v a. O$ c) e* F
return true;
" A- ^+ g' |. E8 b7 p
}
5 z. L! L- S% O( N/ E! N+ n* E