本帖最後由 IT_man 於 2015-3-23 16:27 編輯 : P2 L' _0 T. h4 o& x, T
1 K% [ H1 o1 r
遊客站內搜尋時出現 error message :' [0 F4 u4 Z2 q% M! _
* k( K8 N% w/ p# K& V7 K2 N- l
: I8 P1 z) h, G( d9 Q
7 {2 q$ j/ }3 w6 e/ {) H O4 @
2 t c5 {+ s5 e! ^' d4 E3 g& f% Fsol:; N6 m6 B% l9 J) w8 ?6 a2 z) i4 O
\source\class\discuz的discuz_application.php 約第350行1 Q1 c: `9 ?3 j" b# p. ]
查找3 j8 r! z1 A. ?0 s0 Y6 n+ u
- private function _xss_check() {, I- \/ O+ Y. U* Q
' @. H4 g/ F% f; G6 k! h- static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');4 s4 x8 Q7 M9 |: O4 Z! @' ?( c8 N
- 6 l. m$ d, a. J& W0 D7 v1 _
- if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
: K4 L" ]5 X: f( V3 w4 `1 Q - system_error('request_tainting');' L0 }8 q- ?; A M' P4 O
- }! j. c$ p/ l" g. r
1 ~+ |: y, x+ h- if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
' R5 M" P% i) K% i9 T - $temp = $_SERVER['REQUEST_URI'];
5 Q+ b F# c5 Q% r! \ d$ R4 F - } elseif(empty ($_GET['formhash'])) {
$ r: c- u* ?3 p1 o3 W# G: V - $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');- q: L5 m# V8 Z# x1 h
- } else { ~3 X# D/ K! X& m* ?' t2 ]" c$ X) Z& F- i
- $temp = '';2 z7 F6 b+ s, V5 I0 h; G9 ~ o
- }- r0 E5 E& t, W- E5 K# o
- 0 _8 s7 @: c$ U& {' _- j7 _% c
- if(!empty($temp)) {
7 j/ ~8 x+ [9 |: z8 F( e - $temp = strtoupper(urldecode(urldecode($temp)));
. l- U1 w# ~7 x0 A - foreach ($check as $str) {; |* W* C( d6 E6 K* J; |
- if(strpos($temp, $str) !== false) {
6 R H/ z8 a5 b2 R" @ - system_error('request_tainting');/ ^! w0 [3 U+ E! C+ M' W
- }
7 {( B7 @; ~- m L, E4 ~; W - }
9 D8 t$ Y) [+ H! m2 W - }* f, Z! Y! M0 s7 L) i3 J" X
- 7 A! o a5 Y0 w$ w. S
- return true;
: w' D% g7 N1 @+ b+ M2 ]2 i8 b - }
複製代碼 替换为:
- F" M/ i0 F5 S+ D& x- N) V9 X1 |
3 r$ _2 ~8 J# _: ]4 V- private function _xss_check() {
* d3 G9 }2 I0 K: K4 b( N- B - $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
! C4 h: j" N( e t7 O& H; I' J; d; U - if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
- f0 ^6 }" h/ C - system_error('request_tainting');: d W( f8 @4 @
- }* Q8 T! z8 T4 b2 T
- return true;
) t% \ I" E+ @ - }
複製代碼
& O! Z1 E8 [, K- i9 M# ?后台更新缓存 ===>ok5 {; q( Y }7 y
但 有些 discuz代碼 內容在搜索結果內顯示,曝露在外,是不正常(會員搜索無此問題) ,研究中 H0 V9 V5 N8 b7 x- ]& y% z0 q6 `; F
% O, Q. d$ Q6 ]
; q! ^8 q1 z, k1 V& ?" I |
|