故障描述:
) d% v% c8 E! k) T& L退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
$ R! X4 l4 ]- T& U0 d解决方法:
) ?7 |# Z9 W6 X& e. u8 w& Q8 }
打开 sourceclassdiscuzdiscuz_application.php 文件
. s4 l! m$ u# n9 W- F找到
. E% Q; Z7 s& Z& l5 S3 q) ~# n% s, _
private function _xss_check() {
0 s; T/ k: A* {2 {! h, B4 N
4 |* Z' A+ P/ s static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
4 X; D: t( }/ ?" [4 W& V8 i/ J$ ~0 s* E7 }! H* X3 r+ F5 f; G
if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
, N) ]5 Y3 b* k3 o system_error('request_tainting');
. v' E4 C( o8 A! ~3 P& J# w$ ] }
9 f9 m) p/ ?1 t; v
2 }4 H* x+ P, i5 o if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
$ t s: P3 E3 `( E3 p
$temp = $_SERVER['REQUEST_URI'];
5 x( r8 l; A6 [8 z8 ^% f* q8 }6 { } elseif(empty ($_GET['formhash'])) {
2 t5 G7 F2 O$ M" J# T
$temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
# v" |; R" M" C) N l/ ?1 G+ u$ O1 q } else {
1 _3 g( d0 v1 F3 x9 F0 R $temp = '';
5 m4 R! z z3 Z$ }; m4 o7 M% {; Q; I1 H }
* o) H" z$ n6 m
4 p9 K' O. E+ s if(!empty($temp)) {
( |' F2 O5 X# y9 r
$temp = strtoupper(urldecode(urldecode($temp)));
$ Q) ^8 Y6 R0 z% F$ U
foreach ($check as $str) {
( {% x% c, s1 E U7 Q! ~7 U' Y
if(strpos($temp, $str) !== false) {
9 i! B8 r" c0 ]* K
system_error('request_tainting');
- F9 t" G. W* I. T# x/ H/ t }
# W1 G3 x! P, [ L: t4 [8 a" z
}
7 B! p4 z5 V( ?/ x* h1 o: z
}
8 o) }( L' N& q2 U( ~
( p; N, P1 @7 Q! X
return true;
" N$ R, y {7 N}
; v2 {7 p. \& V7 ]- E修改为
. \; ^+ q6 V+ n/ |! {$ c4 R4 y" T
private function _xss_check() {
I0 j# ^5 Q% r) j* w0 a
$temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
' V7 R1 T, O( h
if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
/ O3 ~ }' f0 a$ X& {9 Q/ o system_error('request_tainting');
/ [# |7 H+ E4 v, Q: F }
- y5 \' Z1 g% p8 z' l return true;
/ |2 s: K7 o* G/ W5 W9 G( g1 \
}
4 i& T' e! Q3 e8 M8 j2 A9 U, C