打印

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

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

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
- @; p3 B* o$ T2 G" i# a, s8 h7 X) N; \# Y3 K3 \
.htaccess
) _+ @1 H6 L) s0 @" t7 _.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了; Z" Z6 S( z* Q# c: Y# o+ O  Y
.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件 8 J0 ~3 J- i: Z' i% G
--------------------------------------------------------------------------------
! ~0 Q* I+ m2 w; f" Whttpd.conf 的設定) |- k$ ~) \+ ~  B4 E: `2 z# f, V; k
加上或取消註解 (#) ]定改成 AllowOverride All
7 A. w& J4 z8 _! |+ t8 F然後儲存及重新啟動伺服器軟件
* |* f8 D& Y. |$ a% r--------------------------------------------------------------------------------' H3 C3 C# k% a) X5 t  J
.htaccess 的用法7 Q9 {' Q% v2 |% }, F0 w2 _$ R
先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)
  K" K( d  i& N. o4 ~1 j7 O# E% p用法:
% n! l3 ]7 o' o8 P1. 密碼保護
$ S. k' t+ X/ D. F- P.htaccess 內寫上:
$ f( Q) ]7 o. WAuthName "testing"& V- d/ K3 j# h+ e* @/ S+ h
AuthType Basic  ~9 _3 {7 b  I. O( e
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
+ M* {2 t0 S3 |, F  ?require valid-user
. Z* p1 U! c5 c' mAuthName 是當你進入密碼保護時,瀏覽器出現的說明8 e/ B# V& {' y8 ~* z" B$ T! L3 ?
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
  q' Z! S- b% u5 Q密碼檔案 (.htpasswd) 內寫上:
3 g' I2 P+ J+ a4 Zuser1:password1
' \% s5 ^+ g1 o1 c4 d5 w7 ^: _user2:password2$ D9 }7 _& j" R. m6 F
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david4 c" @1 a$ C  F! G) S

7 r1 I( n( R! A5 Z4 W- a2. 自設錯誤報告文件
4 u. I. E, K: v  F.htaccess 內寫上:# O! ]  @9 g1 d: }, c
ErrorDocument 404 /404.html
, {7 \: J7 \7 e4 J  H) q% d如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:  `5 |6 f- j! m+ @
ErrorDocument 404 "<html><body>找不到網頁</body></html>
* z1 C! f* u3 f, E- y/ aErrorDocument 500 /500.html
/ L( ]& {" ?, L
- m- |, O' b( B7 d/ Q3. 自設首頁檔案; ^: n4 @% G% G2 m$ P& s: [
.htaccess 內寫上:
; |" r" E& A- q$ x4 p# H/ K3 L' xDirectoryIndex a.html
3 s* I+ L! e% }# L首頁檔案便是 a.html 了
8 h2 p0 `$ b8 i5 ^: `3 Y0 L5 D* |/ @8 \
4. 禁止讀取檔案
! T. S* h# Q) \/ T6 d.htaccess 內寫上:0 N0 V0 T" w* |- R4 `
<Files secret.html>8 n. i9 X8 w+ C7 n  f
order allow,deny
/ E- p; J2 t/ A; |- S9 n* tdeny from all  Y1 ^( d0 _: Z+ \' x9 m0 x
</Files>- P' G$ ~1 f! F, ]6 M9 P$ Y; ]% g5 @
deny from all 即所有人皆不能讀取 sercet.html
' C  x+ I9 `6 j: b, M* x. }
$ p) k0 t0 I# `  ]1 V而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch
" `' y; S: V5 Z! e( M1 X8 W.htaccess 內寫上:3 q! D0 s! z$ ], h- \* C3 A
<filesmatch "\.jpg">- N* |' k5 c& E. R; u
order allow,deny5 i7 Q4 u9 s0 P% e
deny from all
! v5 U5 P& `7 Q, W2 i; H</filesmatch>' K5 N" R3 ]& g+ |' {1 i; d
即所有人皆不能讀取副檔名為 .jpg 的檔案
5 M5 O) M1 q0 i  _. I
$ r9 z% S+ w5 D.htaccess 內寫上:' h( w" S4 y! R& p% |) ?" f
<Files secret.html>
, r1 Y, H" _! b% r  iorder allow,deny- R6 r+ N$ Y5 ]8 \6 ~, F
allow form all3 a, _' O$ f7 n  I2 J( I7 I
deny form 202.202
) p; i) q; ~. M# X+ W+ {</Files># H4 h: o1 t# x0 v, @
即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
2 e' H4 W; ^2 ^2 Z! `/ }, T. d8 v! J. g1 @  e
.htaccess 內寫上:+ V( N. ^4 Z  S. S% C
<Limit GET>
7 ~. s- E  t! k+ m8 xorder deny,allow( o% j. y. o2 x5 [6 ~+ _3 }
deny from all+ O, K/ A; p& H( N$ g6 i2 ]! t0 W
allow from 202.202 domain.com2 J5 t3 c. I* q4 g2 f
</Limit>
& ^% x6 c  t7 p7 L$ E( h即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容& I+ \$ L! x, X5 M% @1 }1 B. W
& P5 O0 f) y$ x& G
.htaccess 內寫上:5 Y9 J1 K4 \7 o8 b* S
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
" r) R, L% q5 U* I% o<files sercet.html>2 T/ F' r* @5 h% m
require user peter. ], T, U/ ?+ M: }! `
</files>
) U+ v5 {) O- y7 l- n即只允許 .htpasswd 內列出的 peter 讀取 sercet.html$ M7 E4 n7 a. ~9 m8 Y7 }7 H; j
- A% G2 c# @1 M7 s" ~0 n  @+ q
5. 重新導向文件- m4 U. ^" e- S
.htaccess 內寫上:# g" }2 \9 v  |1 I
Redirect /old http://url/new+ S' l5 p& O8 ?! K
當用戶要求 /old 時,伺服器便把其重新導向至 http://url/new ,或在 .htaccess 內寫上:
' k: X+ ]4 Q' V- HRedirect permanent /old http://url/new8 P* K# A6 Q& i, ~; p. C" G
當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至 http://url/new
/ a" e  \6 S9 f1 C/ U* K$ o& ^) Q/ N  v: t# A4 J
6. 防止列出目綠內的檔案% @& y4 l/ Y( L$ E' D0 f( u
.htaccess 內寫上:3 e7 K0 X; F8 V3 J1 {! z
Option -Indexes
1 F7 J9 j6 v1 ^+ \3 I5 a# ?8 n8 f+ e這便不能列出檔案目錄了
5 |# y3 p& _' r4 R% n) y: d.htaccess 內寫上:) ~6 n3 p4 i: H7 i" z  z: O
IndexIgnore *.zip *.txt
$ S4 k* _, |$ V2 |這便不列出檔案目錄內的 .zip 與 .txt 檔了0 s, h# ?: ]+ Z" {0 _
4 ~1 b% X  b5 g% F- y2 Q* W
註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )

TOP

首先在你要保護的目錄下建立一個名為.htaccess的檔案,內容大致如下:
8 Q8 x, F: Y4 G3 ^6 v
, V0 Q/ K/ Q& d4 E4 F- }8 ?# 隨便取個名字吧,它會出現在瀏覽器的蹦出視窗中。 . K& ^$ m. |7 C: A6 i
AuthName 阿達的祕密基地
. }+ L6 h1 }  ^% t$ ?! }# 編碼方式,目前只支援Basic一種而已。 3 I: \* |+ o9 Z3 e3 \1 w- Z, F
AuthType Basic 2 Z/ V- A7 ?) [, Y' t
# 密碼檔的絕對路徑,可用htpasswd指令建立。
$ O' n) l3 ?. M" N2 k% X" [AuthUserFile /home/.../filename
. }8 \: c- b; A9 r* {" |1 E' i# 若下面有指定 require group,則需要group檔的絕對路徑。
8 _* }5 g1 F% x3 hAuthGroupFile /home/.../filename
9 Y1 O( g% ~! ~. p5 q+ F$ X. C0 Y- z
<Limit GET POST> 1 i+ m  [% m$ y) m4 [5 J- C
require user user1 user2 ...
' F5 F1 o$ Y! D% lrequire group group1 group2 ...
  `; J' ~- P+ Z4 U8 X3 k</Limit>
; ?$ s6 A! W) v: u( F1 H2 J2 K2 v" e" g/ [" _" B) x
  M# ], m5 I; S- P8 P' f" O
它的密碼認證方式有二種,一種是指定users,也就是只有指定的username才有資格進入這個受保護的目錄。另一種是則指定group,凡屬於指定的group的users才有資格進入這個受保護的目錄,而group中到底有哪些users是記錄在AuthGroupFile中所指定的檔案,users的密碼檔則是指定在AuthUserFile中。且讓我們來看看這兩個檔的格式: ! h6 C; ^2 i/ l: M# j: X+ V* X

4 C5 x5 L; p+ j! S* c# |) A" pgroup檔:
3 f9 @% @6 _2 k) E# Jgroup1:user1 user2 ...
0 v2 L# Y  j5 n. o- k: F' P' o& ygroup2:user3 user4 ...
  D8 C" n" f4 @: D* `% {+ ]% K... : m6 T+ @7 c/ S0 T( D0 _
- p8 P0 e' T; ~) i. H
passwd檔:
* J* f- C( ?3 L9 o% P4 y& U- Yuser1:password 5 a+ L* |3 B9 Z+ f$ J4 o
user2:password
& k& e* g. T# Z...
2 x" w! I1 ]8 y( K. T2 N4 E, p" H4 n+ \3 ^1 {
密碼檔裡的密碼是編碼過的,你可以使用htpasswd指令來建立密碼檔或新增users。而且由於密碼是用crypt函數編碼的,所以你也可以自己寫個CGI程式來新增users。
- L8 j, R) B+ e7 U* W& u5 g( ?! w' u. L9 Y8 s
另外還有個安全問題要提醒你:密碼檔不要放在www文件的樹目錄中,最好是放在www目錄外面,以免密碼檔被不法之徒偷去猜密碼。 % ~' G( _0 e/ s4 J% h( l4 i* ]
0 B  s! A. H: H- F% D) ^" B/ [2 N8 k
OK!!就這麼簡單,現在你可以試試看成功了沒...

TOP

發新話題