故障描述:
2 T! q! |( f4 i% K9 }退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
; X: D. a5 h+ v解决方法:
5 i6 s- }) {6 l6 a, Y
打开 sourceclassdiscuzdiscuz_application.php 文件
9 v& t/ r! |! A3 F找到
7 Y! n$ I5 D. A7 a5 T S$ d+ C
private function _xss_check() {
& ^+ H6 h4 n5 o% w0 e
3 B- w6 G2 T$ m% u9 f8 b
static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
( ]) T+ P1 `) _% G
& ?. L5 ~8 [; c. } if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
) M2 p8 ^: e6 u B system_error('request_tainting');
8 b# P& q# _& Z/ @2 o2 K+ @# U5 v* t
}
' M) Z$ l, ^ Z9 A, ]" O
/ t" E1 j+ g0 y; ]" T3 K if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
8 Z4 ~ @1 o: ?5 c0 o' Y $temp = $_SERVER['REQUEST_URI'];
) r- @5 E& m; D T u( C
} elseif(empty ($_GET['formhash'])) {
; D* P# k- b! L# N2 [4 C$ E2 B- i% | $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
2 V2 O, U6 D5 U# M' y& M# @1 Q } else {
! ~2 M" C9 p% Z9 N% }) O; p9 Q% B. X $temp = '';
$ }, g1 S3 K( K' p: V- B5 x
}
4 m) a' {# Q1 i) N
- ]/ q1 x1 N% r m% K. U9 ?% K% [* [ if(!empty($temp)) {
o: U! {7 _( B' o7 G $temp = strtoupper(urldecode(urldecode($temp)));
' a8 x9 u- E. E- C7 N
foreach ($check as $str) {
- ?& X, Q) B ]& k6 Q7 B" ~' x$ E
if(strpos($temp, $str) !== false) {
' E2 G W7 q5 C4 X" s) r
system_error('request_tainting');
" P5 k3 e5 b. q& K- J% ~
}
" S9 P, y2 l, v9 f# P- x }
. S) m8 l: f0 u& |2 J1 u6 f }
3 j9 U# }/ ^) Y; k
5 [' |/ N3 W5 |" |& S" A& b2 C& f return true;
$ l1 n8 }$ f9 A; L# N, `) _! z}
M$ C. b) c; }8 T9 O" C7 G4 |1 l4 a g7 P
修改为
, s! ~4 {4 a9 x" l7 N5 }0 M. r1 A1 [private function _xss_check() {
/ d. Y, }- p+ u9 S
$temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
/ A q3 s# c$ R if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
. y, ?; y. w6 ]' L4 T" T
system_error('request_tainting');
5 {% r) n; E& ^0 s5 A
}
: A5 }. w) A& Z
return true;
0 d4 E) [& v2 w1 ~- E/ f
}
8 L& A7 O- V2 v( q3 H