打印

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

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

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
! @1 s, i! y( `% o/ u+ ?
' m! M0 N9 `* f: w.htaccess; i& m0 j8 z$ h6 ]% a
.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
  C& H- r8 `4 J8 P) E' _6 r.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
( T7 M9 G4 D0 i0 E2 X--------------------------------------------------------------------------------
2 H7 e' ^0 l1 L" g! A; Lhttpd.conf 的設定7 Y( E+ M4 M+ j8 n
加上或取消註解 (#) ]定改成 AllowOverride All5 {; W; ^3 G: L5 R0 n/ c8 f3 d
然後儲存及重新啟動伺服器軟件 ( ^: ~" p) h! a$ n
--------------------------------------------------------------------------------6 L/ T2 R4 G7 D4 p, J. c. Z
.htaccess 的用法
* {' S: l9 a7 {' y& A- H9 B先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)
5 s# T4 z2 a" p用法:7 f( x) E* Z5 K2 V  h) B& f
1. 密碼保護/ c! B/ Y- [9 y" M* [& p
.htaccess 內寫上:
% ?! l5 o* ~( I# O! ~* m% F8 zAuthName "testing"9 Y, l( a* j- a* y
AuthType Basic
, d7 ]- _* d' ?AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
1 v- T# T( n1 W1 R- ]/ M% j0 w" X+ |4 _require valid-user
. S( h. ^5 }, c( c" u2 o5 b3 E/ hAuthName 是當你進入密碼保護時,瀏覽器出現的說明1 O( I- n& S4 ^
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
" {8 P7 {0 ]9 f4 o/ ]/ g密碼檔案 (.htpasswd) 內寫上:
, u" S# i4 [! a# h3 u5 _) E& Fuser1:password1
! j0 Q+ p( S0 B. Y8 D9 ]user2:password2
3 [1 s( a" {/ M' _1 r/ [但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
1 k' s" z& T3 c$ K! t+ g$ N- {4 B
2. 自設錯誤報告文件) K/ ?# V* ?+ X3 r- N# V
.htaccess 內寫上:* i0 j6 g8 D" o2 y* v- g
ErrorDocument 404 /404.html- D4 I( W& _7 @- R
如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
7 x: j8 N- c* C1 a- ~$ k) bErrorDocument 404 "<html><body>找不到網頁</body></html>
4 U8 b& P2 }5 O- V2 E) q+ {5 EErrorDocument 500 /500.html! Y0 R/ J/ z+ ^8 N# d3 k* w6 y- a

' ^1 }7 [: ?1 _) `% I- d: v3. 自設首頁檔案
3 W2 K$ D3 L  v. m9 r& O.htaccess 內寫上:
5 O  H+ W5 ~6 g( I+ i+ NDirectoryIndex a.html
5 Q1 _, ]; _9 i! _, I/ h3 \# }" n) s6 U首頁檔案便是 a.html 了
8 X: n- C. G2 C) v' _+ S5 v7 x# _
2 c0 v  p/ t" n! d/ B4. 禁止讀取檔案9 W1 K* K7 l9 O" g! S
.htaccess 內寫上:
9 }/ M, U' [: D; K0 G! d<Files secret.html>
. e* |/ O+ L" ?; Forder allow,deny
3 s# W/ P) S  F. h2 Tdeny from all
: R! I! P; [, Z- N  T</Files>* s5 `+ [9 y/ ?" s2 h
deny from all 即所有人皆不能讀取 sercet.html
- ^: [( p9 O2 W, N; ^8 Z: \/ L) z9 u) A+ ~# c3 g$ C' ?* c
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch, r4 z, E0 {8 b
.htaccess 內寫上:- Q7 ~- d% `6 |0 y; ?5 p9 \9 i
<filesmatch "\.jpg">
, N- L" b5 G) u- y$ s" b" \6 }order allow,deny+ C! `3 q/ k" A# I3 m# t, f# ]
deny from all0 |7 J) I% |6 S3 {7 S
</filesmatch>
7 f1 U8 z( T; u# P; z: O$ E2 S即所有人皆不能讀取副檔名為 .jpg 的檔案: Y, p  H  j8 V' p) Q* ~/ ^2 N! f
# H4 H/ F% u# |% V0 P
.htaccess 內寫上:
: |- V6 @6 ~( e<Files secret.html>$ e, F7 s$ u$ ^2 e9 y
order allow,deny
, V7 _. }% P+ s  p6 a, ?! a' qallow form all
% O; Q+ t  T  L6 X( \1 I  Rdeny form 202.202
+ \$ j1 c' D; u4 n* C</Files>
8 n+ s: o4 L  N3 b/ k3 f4 f即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
; f5 }8 H2 Z/ V* P' R) L& c- L
; W7 }" }' B- Y' s) S4 t/ C.htaccess 內寫上:. V. o5 K" {) l6 |* v3 J, |
<Limit GET>. R' g9 r( J" Q2 K# g
order deny,allow
6 S( y% i( ^) A. Ndeny from all* v; b! G$ u% e
allow from 202.202 domain.com
& Y6 R$ i; H% @0 d</Limit>! F" ]2 P7 m2 y( E' z' r* r8 t
即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
) g% z! L# o2 P: H9 p( c+ K. m2 {2 Q* V$ Z1 s7 ~* n
.htaccess 內寫上:$ p5 F! G: R7 ]: C2 p5 G
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"" @0 z8 V# B* {
<files sercet.html>: v1 D! s6 s  b; C
require user peter
4 q7 k$ G; e8 a& k' c9 |  K</files>( @3 `, c$ L- I/ y
即只允許 .htpasswd 內列出的 peter 讀取 sercet.html3 o7 ~$ b9 X0 V% [& h
$ o9 w6 ]6 T6 n  P& D& {+ S# J" P
5. 重新導向文件3 l$ G' C. {2 |
.htaccess 內寫上:
, s- U( }+ m  R- [7 K; d5 i' [Redirect /old http://url/new6 z4 {3 m: Y2 p# R
當用戶要求 /old 時,伺服器便把其重新導向至 http://url/new ,或在 .htaccess 內寫上:  o7 o& c% u7 X) s, y$ |
Redirect permanent /old http://url/new
# P$ N7 B% I/ m& f當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至 http://url/new4 A" I8 S4 Y) n1 ~, ]# R) r; p/ h
/ S: p( N- \7 ]7 F0 x6 j# A
6. 防止列出目綠內的檔案
. B2 B% U, D5 W! E* R2 d9 [4 P. y" I! R.htaccess 內寫上:" m/ E6 m) b0 O+ E+ h" r
Option -Indexes3 w, f7 K) l- X* _) _
這便不能列出檔案目錄了% W+ k) ^+ f( @
.htaccess 內寫上:
. S; l( ~5 C/ ]( gIndexIgnore *.zip *.txt
7 Q& W6 l- o' A& W5 `' `這便不列出檔案目錄內的 .zip 與 .txt 檔了
8 A, u) ]2 p) h4 B3 ~" l" ^" U, K( E
: p4 B5 Q. |* m' S4 W* C8 [註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )

TOP

首先在你要保護的目錄下建立一個名為.htaccess的檔案,內容大致如下: " S+ B; T$ r/ i0 Q+ i
" r" w* _" {$ s6 G) H) E& c8 M) Z
# 隨便取個名字吧,它會出現在瀏覽器的蹦出視窗中。 4 a, p/ a" @. z% O/ q$ ~8 N6 r
AuthName 阿達的祕密基地 8 Z% B) \7 w1 H5 h2 R- n1 S
# 編碼方式,目前只支援Basic一種而已。 $ H) l( |+ E8 j, n, v: }3 }; y) t
AuthType Basic
; C1 J; [2 k# C2 O9 [( x7 j1 [# 密碼檔的絕對路徑,可用htpasswd指令建立。
' q! s! @/ P7 X9 L6 u% OAuthUserFile /home/.../filename
) d* a7 O4 s% S" Z, z# 若下面有指定 require group,則需要group檔的絕對路徑。
4 y: v6 z. ~$ IAuthGroupFile /home/.../filename
- f  G* Y3 o% T6 p4 w7 m- G& m# R4 V1 O6 S
<Limit GET POST> 8 B0 j! }' F! ?" Z4 \4 f! c
require user user1 user2 ... + t1 M) g5 S  _
require group group1 group2 ...
  O( k2 t  m" U, P2 `$ e5 m</Limit> 4 u: d6 C+ z4 @$ q2 C! H( o
: d. ^( o3 _' R

" n! |- f9 N* R' I# |1 h+ r1 M( x它的密碼認證方式有二種,一種是指定users,也就是只有指定的username才有資格進入這個受保護的目錄。另一種是則指定group,凡屬於指定的group的users才有資格進入這個受保護的目錄,而group中到底有哪些users是記錄在AuthGroupFile中所指定的檔案,users的密碼檔則是指定在AuthUserFile中。且讓我們來看看這兩個檔的格式: ( V; r8 i* o2 H* ]. f% W' ?) H
9 [0 Y% I  W/ H  A. g" X7 C4 }6 h
group檔: 9 ^" [# P1 b/ p& q7 p" E
group1:user1 user2 ...
' i$ ]" i. S, P! U1 ?group2:user3 user4 ... 2 N, {- N, _5 v, E% z2 G
...
5 r# W8 a  D. }8 x% q9 H, L; z+ S# s7 R
passwd檔:   V; X2 y0 m2 G4 s1 h
user1:password % t( y4 R+ N8 @9 x8 r
user2:password
/ j2 V/ p6 M& n* ~  S...
7 g3 Z6 q: H0 I. ~5 T# V/ A+ x6 F$ S  ]0 [8 V/ Q- i) h" m$ U1 \
密碼檔裡的密碼是編碼過的,你可以使用htpasswd指令來建立密碼檔或新增users。而且由於密碼是用crypt函數編碼的,所以你也可以自己寫個CGI程式來新增users。 1 D% T8 c" u" |1 G8 g* J" F/ c
6 f; b+ }0 s7 n4 w
另外還有個安全問題要提醒你:密碼檔不要放在www文件的樹目錄中,最好是放在www目錄外面,以免密碼檔被不法之徒偷去猜密碼。
. v, A2 w! b7 C  S
9 X- U! l! k) Z6 `) M' }( cOK!!就這麼簡單,現在你可以試試看成功了沒...

TOP

發新話題