故障描述:
$ _* D& F9 e9 l! b Z/ V8 o! ~ N7 q* H z退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
1 o8 ?& Q# _5 u* U$ W. d9 Y
解决方法:
$ b1 Q2 v" ]5 H* b) ?8 I& _打开 sourceclassdiscuzdiscuz_application.php 文件
2 i" Q" M4 R) u8 }找到
& |: ?- _8 E/ A/ S2 q+ O
private function _xss_check() {
" A' j8 P. \ H7 l6 x; r- c5 X3 g+ `9 }' t/ |& v1 c
static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
. V0 D( `9 }$ P" ~; |# p0 m3 S* n, _/ s6 p+ \$ N# `2 q8 M3 ~- [
if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
$ f, Q% L! i) d1 ?# Y
system_error('request_tainting');
( O6 n i3 t0 T- G1 s1 W
}
$ Z# ]8 g: j- }2 K6 }2 |% s, r6 b4 } h( J
if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
" S! r* m: T" B, ?3 p8 M
$temp = $_SERVER['REQUEST_URI'];
0 ]+ l8 x9 V* m$ w7 p( W( V/ e# B } elseif(empty ($_GET['formhash'])) {
& \+ n( @+ p6 I0 H- z
$temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
( W# u! d. \1 [6 F } else {
, |7 D3 {9 L8 Q" l- | $temp = '';
3 ?1 G9 B) I1 o! y1 x: ]2 S1 P }
- H" L/ O" B4 L( }) w$ F6 ]: k2 g F- j7 x! U" l
if(!empty($temp)) {
( s& a4 x# ^: ]
$temp = strtoupper(urldecode(urldecode($temp)));
0 x8 R d; z! _ foreach ($check as $str) {
" }7 o+ Y9 p% @% x if(strpos($temp, $str) !== false) {
* R2 U- P% y' W( |: W0 L( V( E
system_error('request_tainting');
4 U" [4 _, g! v5 h3 i* A7 p }
; O2 N& ~$ `7 A! K- I
}
) ]) y/ z$ F% f, \4 ?+ K
}
4 E% Q! X- J. v6 t: I9 N
2 F4 Z# B7 D, t- a4 f return true;
9 K5 m- ` ?0 i2 l( {+ i/ a}
" ]) e4 N: f& h# V修改为
4 |+ ^( k4 i3 j' a4 Sprivate function _xss_check() {
$ M" ?" L }* a4 p" n" ^7 V $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
9 r, q2 D/ b0 i, u. e3 a( ^ if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
* e' G5 w4 W* a) \4 U2 K2 W system_error('request_tainting');
& a% R& K& `9 \9 p& t: P }
h, w" A# L$ o( Z$ {9 Z
return true;
& X9 l6 ]4 d6 |}
* G! i& O4 j$ ?% Q: D2 J9 T