故障描述:
' r3 ?* ~: a: {- D1 Y2 h+ Y* G9 \
退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
. a' T8 j' p# X0 Q, ?解决方法:
0 x2 B7 _; ?0 y' w: n C打开 sourceclassdiscuzdiscuz_application.php 文件
" Y' D+ p- \$ n9 S% v$ M2 n找到
9 x$ N; t1 S, i( c6 Yprivate function _xss_check() {
) x, i" m/ z+ K3 P* O
8 i L; F5 M$ o* W static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
- Q+ A$ U( T, u' X0 ?
8 [5 a6 T' g3 ?( g if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
1 j: x v0 y9 K5 m system_error('request_tainting');
0 h4 R* Q2 p* F& z9 Q }
* \/ v, W2 |1 Q) Z( b! O4 I2 g
0 H7 _* v3 Y- p5 F! | if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
/ v1 h k7 @3 O6 L+ D( b
$temp = $_SERVER['REQUEST_URI'];
/ z' J( J; j( \; r+ R2 A% ^# V
} elseif(empty ($_GET['formhash'])) {
) s) n/ s9 e7 B0 L. I
$temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
8 k. q' z* Z( m9 _, s4 S% z } else {
9 f) ?, T- G. E, z! r9 Q* W8 F8 D7 H
$temp = '';
7 h8 Y* g) @" G% a }
" A1 _4 d6 z& M9 F' R1 f: k c; W& ]9 k/ G, {3 t1 z
if(!empty($temp)) {
4 {" u# \! T# q/ Z% H( @
$temp = strtoupper(urldecode(urldecode($temp)));
5 W& @& M$ O! F: @% }: N foreach ($check as $str) {
5 S; {2 h( h( O0 _5 P1 e
if(strpos($temp, $str) !== false) {
1 L' l7 q% c0 w* I5 ]4 Z
system_error('request_tainting');
/ j5 |/ y) U/ w" H8 Z+ J9 m }
* U3 e, v$ r$ R) L
}
* S5 Q" m s: w( a }
: K M. H# \ t) {/ N# q% ]; C+ O9 Y, @+ N
return true;
/ s# V& }% v, M1 z7 E% C( W) r}
+ Z! k& U& n# T' G$ O
修改为
$ `$ e9 t+ `& X& F, N/ G" {private function _xss_check() {
0 x |- p2 j: k0 \& ?$ _ $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
- T8 c8 P' O$ H4 | if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
, s" P. v! \! C( |7 L' M
system_error('request_tainting');
5 G, b1 `9 _9 u; a# f4 H% P
}
8 i" y! e1 T2 J2 L- T( q
return true;
* a5 C; P3 X- Y0 |. O: o. i% |/ v
}
# R$ E& W1 b7 z