Board logo

標題: [Linux] [轉貼]Apache 網頁認證.htaccess 設定方法 [打印本頁]

作者: segaa    時間: 2007-3-15 12:24 AM     標題: [Linux] [轉貼]Apache 網頁認證.htaccess 設定方法

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
8 `' j! ~. u) x7 d  v
$ z) k' S; _, J$ }.htaccess6 V8 ~. z8 Y0 O2 ?+ I) l: n$ X& W
.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
) l; J0 _5 r$ C# K.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
$ f2 r  L+ M* ~( [  f, Y--------------------------------------------------------------------------------
. R. ~4 t: E7 G$ Thttpd.conf 的設定' H$ _$ T4 V2 d$ b4 [
加上或取消註解 (#) ]定改成 AllowOverride All
% w4 D# r. b+ ?然後儲存及重新啟動伺服器軟件 4 N! k: \+ {1 Z% T4 G
--------------------------------------------------------------------------------
* A3 T% r, M6 H! N" G( A8 E.htaccess 的用法* k4 v6 F- q  I5 c1 H6 b
先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)
9 w* f& N- D4 H用法:
/ ~8 m# D. U$ B. j: z$ h- L6 S. D1. 密碼保護' @$ |) J7 C6 k9 o; f0 v4 u
.htaccess 內寫上:
4 r; u1 l* T; `+ _AuthName "testing"
' ]$ c) P" B3 A( m! X( nAuthType Basic
3 ~7 ^! |; t# Y. i$ v. A; w3 NAuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
( l$ g1 V3 c9 k+ I4 {9 s5 Irequire valid-user
# s' b* d9 q* V% zAuthName 是當你進入密碼保護時,瀏覽器出現的說明
* k4 W  W2 N, W: i! L4 gAuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置7 j- t' N* i( N+ I# r
密碼檔案 (.htpasswd) 內寫上:
; x- ]* W8 M1 [: H3 J! I+ A7 s5 puser1:password1& A* w1 a5 `: y- I( V+ I' K
user2:password2
- L3 S$ c  B2 o但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
$ K7 Q9 O+ T: h7 P* F) ^; l  p! c0 B! o8 ?( @! [5 |: v2 L
2. 自設錯誤報告文件5 V5 w% \. ~6 D; B& q' P5 Q
.htaccess 內寫上:$ ]' r* ^' \+ [& n  t
ErrorDocument 404 /404.html
4 @! S$ x7 n& f' o如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:4 A/ Y+ _( s$ o, e
ErrorDocument 404 "<html><body>找不到網頁</body></html>
$ u8 h, s  x# @% q# q5 `! JErrorDocument 500 /500.html' \, a/ f7 v  V( u. ^" W7 a
7 O* i: `) v% n. A9 y
3. 自設首頁檔案
* T+ |8 R4 u7 ]# i.htaccess 內寫上:" b3 t$ K9 P1 f; g: T& l
DirectoryIndex a.html) C; A1 L8 C; \* }; W* B
首頁檔案便是 a.html 了6 m- ^  Z- I( @' O

, l& V) U7 i! A% G( s' |3 F- P$ N4. 禁止讀取檔案+ b, O' ~0 J+ e" E
.htaccess 內寫上:3 V. `3 p9 `8 r( E( P* n/ L4 T/ n: A
<Files secret.html>0 j. Y  u8 ]* i* U) C
order allow,deny* h; O! d' S8 c4 j
deny from all
  j+ B! g; U: I' B# ?</Files>
5 ]) U! W1 X! `- a6 L5 `deny from all 即所有人皆不能讀取 sercet.html
/ U1 E* Y5 |, s8 g2 h  z0 I& l! W5 A( l
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch* l. q( D1 E* R0 F  @
.htaccess 內寫上:
4 l% D- ?1 K; y7 T<filesmatch "\.jpg">
; s) k3 G: }* J% M9 vorder allow,deny
3 b! Z, N# P9 u, Vdeny from all# E7 }9 P7 W8 T3 X
</filesmatch>
# Q$ V# G* U2 G3 T! l1 l即所有人皆不能讀取副檔名為 .jpg 的檔案
8 J6 k/ g# P) j. ?+ C8 O) l& y. S/ k$ H5 q5 _
.htaccess 內寫上:
& [9 j5 p! I; z<Files secret.html>& `5 ~) V* T( A9 }1 [
order allow,deny
8 P- x. I  b6 U- Kallow form all
1 }* H/ b# x. @9 h! i+ Y' M& P* n+ hdeny form 202.202+ k1 O$ {3 w( x6 T
</Files>  g4 k, \6 W* y( d. |
即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
) M  M$ \6 ?4 n. `" w$ K/ ]; Y3 h) `, k. q! d6 M
.htaccess 內寫上:
7 N2 ?" C6 _) ~1 i0 f+ @<Limit GET>  E- Z- o6 q2 w0 i4 v2 Z' C) q
order deny,allow* ^6 b! P( ]' d8 B2 _; y
deny from all
" G; u6 o" {+ @3 s: g) [$ |4 pallow from 202.202 domain.com
1 F; q, N, w/ m</Limit>
4 M1 x' s4 |# Q/ j即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
8 ~/ K. M8 \& j. K
2 y! V, ?( m& q0 U% d.htaccess 內寫上:
- R+ [. I! {8 nAuthUserFile "C:/Apache/htdocs/testing/.htpasswd"! v) J1 c' S) E
<files sercet.html>
1 ]' A* M- C7 q% [$ w4 orequire user peter
- \9 f; w! z* w; W* W</files>
/ `: v4 H/ O; ~6 `% v" g即只允許 .htpasswd 內列出的 peter 讀取 sercet.html
! y) F2 `+ }2 E4 X
% b8 l2 R6 P) e8 h- p9 r: I5. 重新導向文件6 M. O* {' d( m- J9 j
.htaccess 內寫上:8 P3 P' }4 k" V5 a7 f# n3 h+ S
Redirect /old http://url/new1 V; G& `) b4 u
當用戶要求 /old 時,伺服器便把其重新導向至 http://url/new ,或在 .htaccess 內寫上:* }0 c, z) @. a) V+ N
Redirect permanent /old http://url/new
4 T, ~9 W7 v: G/ U, o/ z+ m當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至 http://url/new
$ s  x3 I2 C' @+ T8 C+ I# p( E) G/ K% U& I# c8 l
6. 防止列出目綠內的檔案
1 `. g) Y9 [. Z; j& `.htaccess 內寫上:
( S+ [/ `, a( i8 a4 pOption -Indexes
$ l% g) S: W  [這便不能列出檔案目錄了- {3 y0 d4 O$ Y! L. x( k
.htaccess 內寫上:" I$ M. W' Y  e+ u% ]& n+ C
IndexIgnore *.zip *.txt
/ R* y5 S5 H& G9 D1 X0 d" G. J這便不列出檔案目錄內的 .zip 與 .txt 檔了
" K. r) ^% K4 F& [) p2 [0 z( p2 z! {* a0 S5 X
註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )
作者: segaa    時間: 2007-3-15 12:25 AM

首先在你要保護的目錄下建立一個名為.htaccess的檔案,內容大致如下:
; ^0 [& {0 T* U& G, w  n2 w; e! H" _* \7 u# \
# 隨便取個名字吧,它會出現在瀏覽器的蹦出視窗中。
6 H( w, t2 u/ }+ Z" NAuthName 阿達的祕密基地 , X3 v1 |4 ?+ K- T
# 編碼方式,目前只支援Basic一種而已。
. ]7 ]+ b# Z0 fAuthType Basic " ^: Q  ?0 {- {7 d; U$ s' d
# 密碼檔的絕對路徑,可用htpasswd指令建立。
+ W: p, J3 b* ^- N( s) \0 wAuthUserFile /home/.../filename
& ], n: D# G! t: h# 若下面有指定 require group,則需要group檔的絕對路徑。
, k1 ]1 t! z$ V1 Q7 R  t" lAuthGroupFile /home/.../filename 5 R7 x+ ]6 Y# z6 u

# L( k0 x8 }& p* p7 X2 `<Limit GET POST> 8 H7 G% M! M& c# b  B
require user user1 user2 ...
6 i4 a5 d' ^7 \3 u) q: u* }, Nrequire group group1 group2 ...
* T6 ?2 i+ ?4 \6 L) {$ [. u* n</Limit> 1 G) X& R7 l& ?# m

8 z- y% q: ?5 I* K1 C) L6 F/ `  ^" c( T8 K0 E. @! j7 t% y& C& H
它的密碼認證方式有二種,一種是指定users,也就是只有指定的username才有資格進入這個受保護的目錄。另一種是則指定group,凡屬於指定的group的users才有資格進入這個受保護的目錄,而group中到底有哪些users是記錄在AuthGroupFile中所指定的檔案,users的密碼檔則是指定在AuthUserFile中。且讓我們來看看這兩個檔的格式:
3 d) i3 V7 n0 H' N2 ?' \1 ?
" w! {% n9 D7 F3 `& ^2 {& C% jgroup檔: 9 I; _4 W0 h( A4 _3 ^3 _3 h
group1:user1 user2 ...
/ ~3 H5 W5 _! X7 T6 Xgroup2:user3 user4 ...
  N' K5 N  J6 P: i. K...
8 D) {# P/ M3 U% V& r4 t+ J; F# ~2 y2 [+ Y: C
passwd檔:
: F  }) r9 b2 @6 M( T/ Yuser1:password 1 J3 L. `  S+ v, n) G9 Z
user2:password
8 L; X4 w* O0 {...
; f' J! I0 |5 m" r! c* y
1 s& @# i( ^. y+ d) j) d  w$ l! e密碼檔裡的密碼是編碼過的,你可以使用htpasswd指令來建立密碼檔或新增users。而且由於密碼是用crypt函數編碼的,所以你也可以自己寫個CGI程式來新增users。 0 Q0 T8 ^+ r& G8 ~8 x
% g; M$ u8 c+ H. M/ k
另外還有個安全問題要提醒你:密碼檔不要放在www文件的樹目錄中,最好是放在www目錄外面,以免密碼檔被不法之徒偷去猜密碼。 ( W$ D4 A1 E( i; X6 x

. v. J+ B: {  M0 X' f3 a  uOK!!就這麼簡單,現在你可以試試看成功了沒...




歡迎光臨 幸運草之戀 (http://discuz.segaa.net/) Powered by Discuz! 6.0.0