故障描述:
/ p7 b: J& z# @" Z( {
退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
. v$ C; b5 E& D8 ~+ }/ V" b) o
解决方法:
) ]; P+ k( v+ [" m" ^3 U: f9 y% L打开 sourceclassdiscuzdiscuz_application.php 文件
5 V; T( y4 K* P! k; P找到
& i1 T3 N+ j8 G8 O) ^( Z& e- sprivate function _xss_check() {
8 X% x9 ?+ K5 h; Y2 a- ~/ l
7 B4 I, ?( m u3 F3 \$ n i
static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
$ Y# b% t! T. ]
7 O, i! X( P* u' q) ^ if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
, @4 Z7 R; A Q3 c1 a system_error('request_tainting');
0 |9 ~# ~# @$ K# A
}
/ ~7 h) r7 S3 O$ A4 B6 X2 i1 S& O/ a9 E* G
if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
: R! z f2 p. C' _9 M3 F& u $temp = $_SERVER['REQUEST_URI'];
. m" p' f7 B! p l" U+ c4 G } elseif(empty ($_GET['formhash'])) {
- }- q' Q c2 {' C+ J1 |, _3 Z
$temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
+ ]0 g5 a6 e0 O) E1 z
} else {
7 r6 X% ?9 g9 ?+ c8 @
$temp = '';
4 D2 H( [! G, S8 F- h
}
9 U }$ P4 c3 I# p1 y+ S6 F
: T& E2 s" C- v if(!empty($temp)) {
' X( z$ @9 y ?! U. M4 w% e $temp = strtoupper(urldecode(urldecode($temp)));
7 c# I; L1 w" n, l- u; H foreach ($check as $str) {
- j# [+ t- j. a1 K8 @% l6 O
if(strpos($temp, $str) !== false) {
& ]; ^# j" k2 [' I) q' A% W/ A
system_error('request_tainting');
) F* p, E4 P( E% A& N }
$ g$ W9 ~5 C2 U" h* e }
, w4 C7 s) c! u- k" n# ~1 W3 A5 l }
- Q p* r0 o$ }( ]* T* g) }1 [. v8 k, L, Q$ y* |( f% i
return true;
: |0 {5 Z' A2 N# k3 q# N) K
}
3 T `& `% T7 L; U
修改为
2 {9 x0 P1 }' p% w6 L6 r7 r
private function _xss_check() {
9 I$ ^* S9 H9 `- [6 J. C $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
$ \8 j0 x- J8 b9 h* ~
if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
5 Y/ R; r; D9 X/ ^2 W system_error('request_tainting');
5 o% E$ p) H: n5 C$ B7 U# l }
" \& N. P& ?/ j# N3 e return true;
* i- g' |3 p9 f6 z2 f3 g& P}
/ V$ c* C6 R- Y3 E# x