打印

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
( K% F# E* V5 T7 u* N# y% E( r  y2 s
.htaccess
6 G, N8 b+ A% }: ].htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
" K4 j* W! P! F& c# P1 O" R.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
% W, ]( l* q% ^* O+ w9 F--------------------------------------------------------------------------------( r3 ]. f1 S5 ?  S6 [! x# U
httpd.conf 的設定* h, |8 L7 E4 {- f
加上或取消註解 (#) ]定改成 AllowOverride All
  q9 @5 d' E3 J+ h然後儲存及重新啟動伺服器軟件 , E3 @: V3 X+ l- \# K
--------------------------------------------------------------------------------
: y5 O, x. R* _/ F0 A+ X; o.htaccess 的用法
! J0 b8 q1 J+ G& G先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)
# \4 V4 N: d8 s0 K( H用法:! F6 F" [/ ]7 b$ [/ k  U0 x' P* [
1. 密碼保護
( o1 O  ^( @6 a* ~5 ?7 t.htaccess 內寫上:
, F) d/ Z2 d' k3 M1 Y) w, kAuthName "testing"
3 r9 ?; V& ]( `AuthType Basic- c: L* G+ e; s; a/ j3 J; }
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
8 J% w" K2 l/ K  {7 ?require valid-user; p8 k4 z* B6 p
AuthName 是當你進入密碼保護時,瀏覽器出現的說明
+ Y6 N; s! a' u8 d' NAuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置7 b0 n0 z. K) j( |: k6 S
密碼檔案 (.htpasswd) 內寫上:5 y6 b8 j6 C/ ^* d0 D7 l0 e2 k' U
user1:password1& g" n+ e: W+ c1 h# j
user2:password27 ^9 Q, S0 W1 X8 W1 K: ?
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
% @5 p) z9 I/ b6 z9 R1 c0 W) A% @+ D) r. U
2. 自設錯誤報告文件4 W8 g" |: Y$ N' z) t
.htaccess 內寫上:
' J6 f' _" t: L8 f7 X1 aErrorDocument 404 /404.html& u0 G: O# L' [4 m" @( S
如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
" e' n0 K8 @) @4 ]4 ^8 kErrorDocument 404 "<html><body>找不到網頁</body></html>. n" X$ W" g& p4 V7 Y8 J% d
ErrorDocument 500 /500.html  d+ G2 o/ T, d& H3 d, T

+ A) E& ^1 g8 d6 @3. 自設首頁檔案
" q# L8 k+ H: W8 \- G/ c! B8 _/ E.htaccess 內寫上:& s; p$ q7 y$ L) y# _
DirectoryIndex a.html0 {* \1 f, X! k
首頁檔案便是 a.html 了
+ {4 o: @  R$ t  `$ P4 \. M( e1 V0 j9 k7 O3 E' \* P# |
4. 禁止讀取檔案1 D+ P# S) z. p' {1 {9 Y$ l4 y8 L% R
.htaccess 內寫上:/ q4 L/ R: `2 d/ ^! f- i
<Files secret.html>
$ D5 T3 b4 B3 {9 [' C& _order allow,deny
/ n4 y+ Z% @) g" l6 S8 odeny from all) _$ z' _1 U" d6 r  q& F: R; n
</Files>7 s: X7 Z: Z  ]  {; b' C
deny from all 即所有人皆不能讀取 sercet.html0 _: j7 A: v  x$ ^. r
. ]. g+ Z) w# g3 d1 Z
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch  B5 w5 j. C1 D0 F0 _$ D' t8 W6 v
.htaccess 內寫上:. V; F  c8 n0 d5 W  y8 d, \
<filesmatch "\.jpg">
+ E. I% G5 c) d- I& U9 J8 f! Aorder allow,deny
% Y8 Q1 N7 e* p: h+ t; ldeny from all
+ z$ d& e4 j+ o</filesmatch>
0 Q$ G. k; b9 T+ i6 T, R即所有人皆不能讀取副檔名為 .jpg 的檔案
. Q, K6 H- a/ f+ Q! Q
+ w9 E) i& h' s) a$ L- [.htaccess 內寫上:
0 g" m0 e( Z% A/ f<Files secret.html>
* r; p( |+ b0 t. Z  _order allow,deny
+ |- [2 \! }2 [5 Z& Kallow form all
3 M% H5 A% ~- @; w; Qdeny form 202.202+ B- L: u7 ?# _" A5 L$ r( d( s' t
</Files>
9 y: ~7 d$ j+ M即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
! ?" @" g7 F+ u5 b4 l% G6 S8 |. M
.htaccess 內寫上:
" r# S1 u. G) \9 b% u" @% n<Limit GET>
; m* d  @' x& n, Y/ worder deny,allow# o/ _* Q7 K& P* E
deny from all
1 T. h% J# f/ F. v: C6 Sallow from 202.202 domain.com
* }! j6 V  i# k</Limit>4 ~, s% F& o; V; z% Z
即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容7 G  k% [! M; ?3 M) |

# J0 F" g( j$ ?! m.htaccess 內寫上:' p, |) e. _0 N
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"# c. G6 g+ _0 }4 B
<files sercet.html>* g* @2 x& ^; C8 j3 ~( D$ x
require user peter
# `, v( ?2 }9 I9 w% x. F  A</files>
: V$ T! ~; C; B即只允許 .htpasswd 內列出的 peter 讀取 sercet.html
5 E( G8 ]7 k+ Z- r  B9 \$ t) g" {3 G2 b4 O
5. 重新導向文件% _" u+ D9 j# c! I# Q
.htaccess 內寫上:
- ~0 ~2 P( L: G3 bRedirect /old http://url/new5 ?2 k* |( g$ P0 e! _# Y" {5 E3 _% W2 ~/ P
當用戶要求 /old 時,伺服器便把其重新導向至 http://url/new ,或在 .htaccess 內寫上:& V) V2 |! V5 M* z2 m7 {2 W$ W
Redirect permanent /old http://url/new
6 Q: a( }8 I0 c# q當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至 http://url/new
- _6 s. b, ]5 Q9 u- a; j* T5 U/ y) S# x
6. 防止列出目綠內的檔案
& l  S+ I5 M2 Y) \! h.htaccess 內寫上:
" M. l) G! g5 vOption -Indexes
; a' Y/ s+ {) X6 w' G, [8 j. H這便不能列出檔案目錄了
! k9 i- Z, n( {6 i' \2 l.htaccess 內寫上:
, F7 q+ W1 K$ z4 L% O& nIndexIgnore *.zip *.txt1 ~$ F* a# X2 z
這便不列出檔案目錄內的 .zip 與 .txt 檔了
8 L. ^, d# v5 ?$ Q# t: f8 S% X) B& n! H- L4 q
註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )

TOP

首先在你要保護的目錄下建立一個名為.htaccess的檔案,內容大致如下:
# r  V  H/ @$ `# H8 Z  r/ w
9 F3 I9 L" x: ^4 z# 隨便取個名字吧,它會出現在瀏覽器的蹦出視窗中。
. |7 l" {" X8 X" FAuthName 阿達的祕密基地
6 O* N4 W2 D: w/ z6 K  m; E# 編碼方式,目前只支援Basic一種而已。
2 i4 z$ j4 A4 R" {AuthType Basic
5 F, I- }- H' M; N7 g8 L7 h2 |# 密碼檔的絕對路徑,可用htpasswd指令建立。 3 }. o8 F7 `+ Z9 ~
AuthUserFile /home/.../filename
4 D: u9 u2 F+ I2 A# f6 S" A7 u; J# 若下面有指定 require group,則需要group檔的絕對路徑。
5 \1 y" S  ?# R4 s, [6 ^) fAuthGroupFile /home/.../filename
) O& H. N4 L" u( Z6 V, T6 o; o# s$ D1 @- v% [' [
<Limit GET POST> ; ^$ C3 c* ~2 c2 E' m8 L# w4 X
require user user1 user2 ...
9 Y" i2 ^2 S! o# krequire group group1 group2 ...
- L+ l) ]! k0 m1 Z3 I1 @</Limit>
9 z# F, w! S: _9 c
& q* J  f8 w: L8 y$ o8 K5 s! S! K4 `/ z8 L( m- t
它的密碼認證方式有二種,一種是指定users,也就是只有指定的username才有資格進入這個受保護的目錄。另一種是則指定group,凡屬於指定的group的users才有資格進入這個受保護的目錄,而group中到底有哪些users是記錄在AuthGroupFile中所指定的檔案,users的密碼檔則是指定在AuthUserFile中。且讓我們來看看這兩個檔的格式: / i/ W: W9 M: H3 ?/ D' h
6 H' ~# O' d  \  ~
group檔: - F7 L0 r$ s5 ^8 U
group1:user1 user2 ...
6 A, k/ A7 O- Z2 x* }group2:user3 user4 ...
5 m, @+ s1 B5 M; ^9 I8 d5 `* ]... ; I, r2 F: g9 N6 F

" k: s/ h" Z* y4 F! Y/ Z3 W; ?# ipasswd檔: 1 l+ p! Q. n  h9 S$ L# g3 Z
user1:password
1 y- T  X. x, D+ U; Zuser2:password
* V' Y. B: G0 B/ i, y4 ~3 T- E7 }2 K...
& s& t2 @& f- a% r6 U4 [$ ~& V
+ t; `) ]3 I+ H, H& ], v密碼檔裡的密碼是編碼過的,你可以使用htpasswd指令來建立密碼檔或新增users。而且由於密碼是用crypt函數編碼的,所以你也可以自己寫個CGI程式來新增users。 0 s4 r/ q( H. A2 d% }( S
6 X6 M1 o$ B; C4 ?3 {! F0 ]
另外還有個安全問題要提醒你:密碼檔不要放在www文件的樹目錄中,最好是放在www目錄外面,以免密碼檔被不法之徒偷去猜密碼。 . y# O. R! b! A( Y

# Q& L1 K9 [* S! S) t8 f, t) F, QOK!!就這麼簡單,現在你可以試試看成功了沒...

TOP

發新話題