故障描述:
4 P. r$ V! V/ W! K' v/ M
退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
3 Z% V: V6 w. e解决方法:
7 M% G$ h2 d" Q( S; R! {
打开 sourceclassdiscuzdiscuz_application.php 文件
; r' L+ q$ e1 n6 ?9 C; H0 q找到
3 @; Q0 }2 F0 X4 J5 V% Q0 o% \private function _xss_check() {
2 h- |7 q n: `/ I: e z' H% I. P
$ M5 I+ R/ I) [$ V$ d x
static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
3 Y) _" s8 G4 _6 `/ i
7 R5 A2 [/ a/ E if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
3 n, |2 x/ {: s6 A system_error('request_tainting');
. k; t% E0 G5 k7 T. v
}
5 k( ~ A8 h) C) _
% @; v0 w0 C/ v B2 ~ if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
5 r+ n% \0 w Q6 y; I6 E7 _ $temp = $_SERVER['REQUEST_URI'];
1 M+ A ?1 T Z& R
} elseif(empty ($_GET['formhash'])) {
- x. v$ u! i' b+ K% R
$temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
, ~5 n2 `! j* r* G; v( s, T } else {
) H# W7 T7 v$ G+ _! X $temp = '';
1 g4 I! Y) u) ~ ~: _
}
8 k8 l7 r$ q$ ~2 C- s1 r; }2 |2 {8 z) P( v
if(!empty($temp)) {
. S1 E+ n- L; X3 \. t $temp = strtoupper(urldecode(urldecode($temp)));
: r, N; b: d3 I+ M [% e foreach ($check as $str) {
0 @ L/ l8 l' Z. `- I0 ]: S: v, L, S
if(strpos($temp, $str) !== false) {
( E0 c1 A5 V8 ^( f& t! o7 v
system_error('request_tainting');
& q/ D3 d( h t1 S) ?7 [" ]
}
( X+ T1 [- y, I& ~. K% Z }
% }3 a$ d# J& w. R }
8 [! K% J) q+ m- Y9 n0 R0 _
8 X% U' S: `( T( k) | return true;
) _1 ?4 q" ` A& U: s/ n( c}
5 o3 }9 C% d) T* i* K% e7 h' }
修改为
' ~3 o6 x) Q/ x! ~# F" w2 K( `- a
private function _xss_check() {
- F0 y8 L/ i) f& s, L- l
$temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
9 q, l+ s* T5 O2 |+ e if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
/ u0 U5 j* G# y6 e8 F4 l9 ?. W system_error('request_tainting');
1 x% z! H" X8 L$ b `6 ?% Y+ m8 X/ w
}
% w! R* N/ V+ D7 H _, c k* v* | return true;
6 |& A) P% n1 Y; x9 `; u
}
6 b% x: k2 y# A) M