故障描述:
" ~# h+ D$ ?$ x* R. U8 k退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
0 H8 N1 @$ f! B' D0 J% K, X4 o解决方法:
, O% g- q" t9 {+ T/ T3 I+ t打开 sourceclassdiscuzdiscuz_application.php 文件
; [- U; R# `8 ~$ g( P$ y) m' ^找到
& b% y d! ~; p4 Z/ G5 v) v' V
private function _xss_check() {
* u- r% ^6 R" f/ h4 z
5 C' n. B* ^1 L* z static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
: w; k) _8 I/ y0 U1 U0 f! F0 S$ F) u A6 d# F& U! z
if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
! ?2 Q0 h5 q( X1 n system_error('request_tainting');
% t- {9 m- `7 ]% K9 J2 z; q
}
8 Y( W6 ^2 a, I' M+ y
9 S; f7 ?7 n9 k4 m4 X) y2 T if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
( k" r) R$ r9 J: v, U; J1 B( _6 v $temp = $_SERVER['REQUEST_URI'];
4 u( X+ h' U1 F D+ O3 d
} elseif(empty ($_GET['formhash'])) {
# k* `$ G* ]4 R$ x! Q
$temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
' E6 u6 ^ c/ J: ]" x
} else {
) z7 l" M* ^0 q4 }3 y, y
$temp = '';
" w8 v/ x" Y3 M }( S9 p4 H" F* x }
' s; ~( D6 ^; g& T7 t. q, W/ I
( ]- j' ?; `/ ^ ? if(!empty($temp)) {
% r: W" c: }* T6 u) }- e
$temp = strtoupper(urldecode(urldecode($temp)));
7 s- ]1 b4 {" E, v foreach ($check as $str) {
: t0 z6 v0 I& ]$ _- {8 F, U if(strpos($temp, $str) !== false) {
2 Q4 }5 B3 I4 K/ Z+ F: a6 B system_error('request_tainting');
+ I+ v) @ e$ u# k/ C }
+ `: Q. b! T& L0 X/ s6 a' T }
8 G" v- a: N) h; z4 R& {' f) N" Q
}
, O$ }- _1 y8 N2 Y& ?+ F
% V+ a3 `/ I/ u ^) _- g! p return true;
$ F$ ?: g. q) \4 [( n+ J) Q) Z}
9 x1 j* ~. v/ o% M# J4 x
修改为
, m* z. }# m% F7 q( g
private function _xss_check() {
2 `& k3 l9 x; I: d' \ n) e
$temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
9 T$ ]' s8 I9 i7 r if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
3 }' A6 C, A1 u, b1 e. X' d( k system_error('request_tainting');
4 D/ G: D B3 x$ r1 k2 J: `
}
. t- j$ J/ A3 k" ? return true;
c9 E4 G Q% g1 J# W, i7 E}
# s& @# u2 H. f, z; {# _3 |, ~9 M