標題:
[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$ }
.htaccess
6 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$ T
httpd.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. D
1. 密碼保護
' @$ |) J7 C6 k9 o; f0 v4 u
.htaccess 內寫上:
4 r; u1 l* T; `+ _
AuthName "testing"
' ]$ c) P" B3 A( m! X( n
AuthType Basic
3 ~7 ^! |; t# Y. i$ v. A; w3 N
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
( l$ g1 V3 c9 k+ I4 {9 s5 I
require valid-user
# s' b* d9 q* V% z
AuthName 是當你進入密碼保護時,瀏覽器出現的說明
* k4 W W2 N, W: i! L4 g
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
7 j- t' N* i( N+ I# r
密碼檔案 (.htpasswd) 內寫上:
; x- ]* W8 M1 [: H3 J! I+ A7 s5 p
user1: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! c
0 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 `! J
ErrorDocument 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$ N
4. 禁止讀取檔案
+ 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 g
2 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 v
order allow,deny
3 b! Z, N# P9 u, V
deny 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- K
allow form all
1 }* H/ b# x. @9 h! i+ Y' M& P* n+ h
deny 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 p
allow 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 n
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
! v) J1 c' S) E
<files sercet.html>
1 ]' A* M- C7 q% [$ w4 o
require 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: I
5. 重新導向文件
6 M. O* {' d( m- J9 j
.htaccess 內寫上:
8 P3 P' }4 k" V5 a7 f# n3 h+ S
Redirect /old
http://url/new
1 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 p
Option -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" N
AuthName 阿達的祕密基地
, X3 v1 |4 ?+ K- T
# 編碼方式,目前只支援Basic一種而已。
. ]7 ]+ b# Z0 f
AuthType Basic
" ^: Q ?0 {- {7 d; U$ s' d
# 密碼檔的絕對路徑,可用htpasswd指令建立。
+ W: p, J3 b* ^- N( s) \0 w
AuthUserFile /home/.../filename
& ], n: D# G! t: h
# 若下面有指定 require group,則需要group檔的絕對路徑。
, k1 ]1 t! z$ V1 Q7 R t" l
AuthGroupFile /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* }, N
require 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% j
group檔:
9 I; _4 W0 h( A4 _3 ^3 _3 h
group1:user1 user2 ...
/ ~3 H5 W5 _! X7 T6 X
group2: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/ Y
user1: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 u
OK!!就這麼簡單,現在你可以試試看成功了沒...
歡迎光臨 幸運草之戀 (http://discuz.segaa.net/)
Powered by Discuz! 6.0.0