故障描述:
4 _6 @2 k7 N; B退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝“错误。
6 y, ?( { G; L7 x
解决方法:
# }" [& u" K, F& M# Y/ S打开 sourceclassdiscuzdiscuz_application.php 文件
! I/ L3 O2 e8 {( B找到
: O- b& n' b& ^7 Nprivate function _xss_check() {
' s9 M4 W! m1 O# P" T3 h( C: D) [. V; o. ?1 @
static $check = array('"', '>', '<', ''', '(', ')', 'CONTENT-TRANSFER-ENCODING');
1 u9 n+ i! s5 Q9 K1 V- u
+ \9 ^6 O' L9 ^0 T* j if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
[) ]6 X$ u X2 o' y system_error('request_tainting');
- W& |* q) \9 R( V% S
}
7 x+ B/ q. P2 n" {
9 I3 }# ]7 p( }4 u. h if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
3 H5 K4 L! l9 |; @ $temp = $_SERVER['REQUEST_URI'];
5 O6 V- s* K5 ?) Y& | } elseif(empty ($_GET['formhash'])) {
+ [2 ?* h P8 L/ M! x $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
5 c3 H9 c* M8 A9 | } else {
# |4 E; j* _- W3 I $temp = '';
f: C3 Y3 E/ o1 Z F' ^& r }
4 P$ D3 ~, U( R( a5 t+ G: y) v i3 F; Q. F+ K3 i, u2 A
if(!empty($temp)) {
7 P6 w+ A9 y/ U M0 I# d: J $temp = strtoupper(urldecode(urldecode($temp)));
6 h7 s! ]1 M2 l) ^ c6 w# Q9 x1 k0 y foreach ($check as $str) {
4 x5 `% _) G3 ^( B! p7 C( N% I
if(strpos($temp, $str) !== false) {
8 O6 |. B1 Q' w! r: h
system_error('request_tainting');
5 c+ X' t/ `& C
}
$ {' Z' K1 w: x5 n, F
}
3 x+ v! {0 \. W: v) V: h }
; S! D+ u2 e3 m' t% j* T; [. J
" S4 B4 x$ A& w" r return true;
4 e3 f5 o' [% Q# ]( n}
" N: H7 j0 D( B0 C4 Y$ F9 C- |
修改为
7 O: j2 ]. [; G: {+ N
private function _xss_check() {
# t9 q6 m/ z6 w0 ~9 J; U3 m $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
* O$ X: L# t' ]% s" u; V
if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
$ g$ T& O; S8 E E system_error('request_tainting');
1 \) [+ W- i% T }
* B2 `" C2 r c5 x return true;
8 d N% z5 Y0 _& e& H" \
}
# u0 u8 F" k8 t) c