標題:
[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
[打印本頁]
作者:
segaa
時間:
2007-3-15 12:24 AM
標題:
[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
9 Q8 p, ?1 t: |8 ]4 j( a! n! d
) @& C0 @% u- [# ?
.htaccess
8 @) P% c/ e( p. w) u
.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
4 ?! p6 D% [8 O; T' \) j0 p
.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
" z+ }2 A0 }2 d+ r6 d
--------------------------------------------------------------------------------
U% T. l( f3 K9 V
httpd.conf 的設定
; }0 H& ?( m6 i( f( Y w0 @
加上或取消註解 (#) ]定改成 AllowOverride All
& G) Q2 N5 n* B7 m: q
然後儲存及重新啟動伺服器軟件
; _8 ?% C; r: b2 m: m& x$ a
--------------------------------------------------------------------------------
8 b8 v( t& w1 T. i! ]& B$ Z# P
.htaccess 的用法
?( c. _) @: P1 }
先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)
( J6 B4 I! O! R
用法:
9 s% t" i9 c& ]. q$ o
1. 密碼保護
( r4 E$ u! A6 _1 f
.htaccess 內寫上:
; K/ n G1 L6 |
AuthName "testing"
1 C" m5 l F1 V) d6 }# ^+ Q
AuthType Basic
' h1 f/ t5 R4 Z6 ?6 C: {
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
% J6 T# M% t3 g2 {0 S
require valid-user
8 @% ?5 t- w1 _3 T
AuthName 是當你進入密碼保護時,瀏覽器出現的說明
2 K& ^* S/ J" w" Z
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
, S" |# H9 _. b
密碼檔案 (.htpasswd) 內寫上:
. J' f- Q( h# @( t( h
user1:password1
( T. V/ x; {5 G- q
user2:password2
4 k3 Q/ N1 o A% h+ C* d1 }
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
1 `0 G" H# a. b: o# u
; {7 H9 S- A: T6 K+ \* X- ^
2. 自設錯誤報告文件
# b& }% V6 n) M- K
.htaccess 內寫上:
* ]' X0 G: B, t; L S9 G a* `
ErrorDocument 404 /404.html
B0 m; q- j S- b# A
如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
K$ ?# g2 n. ~4 H2 V' e
ErrorDocument 404 "<html><body>找不到網頁</body></html>
* X. G4 [% m" {# h
ErrorDocument 500 /500.html
1 \' q4 C6 }' l
! s: f( E) p3 ~2 O0 X7 [) N) |
3. 自設首頁檔案
6 H7 R T/ g7 ^ s
.htaccess 內寫上:
5 V% t6 Y8 \8 _& S. `5 Z. G
DirectoryIndex a.html
r6 e4 B+ m- R9 p. B9 i
首頁檔案便是 a.html 了
- Y' U' ?' `. H
/ K! o7 A2 p6 W$ z8 j
4. 禁止讀取檔案
0 r3 p B( V/ |: N4 a0 w3 s
.htaccess 內寫上:
7 N; _& t2 \4 l q
<Files secret.html>
# w) }' m# d2 @1 V) `- ~
order allow,deny
r, A# ]8 A. ^; W! u8 W
deny from all
6 T9 i- z) q* h/ W
</Files>
7 ] h6 t; `0 E! E) |8 `+ \
deny from all 即所有人皆不能讀取 sercet.html
/ A4 P, I2 a, U
* l# t: A9 Z( v
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch
' N" A) N: L7 C
.htaccess 內寫上:
9 z* O \' t4 q# V, X2 J2 n
<filesmatch "\.jpg">
% H# B5 H& ]$ A& L. \" S- G! N( `
order allow,deny
- q- t4 x9 C% p9 o
deny from all
% i* T; `8 P0 ]8 i/ [# I" C7 E% z
</filesmatch>
' Z0 f9 V! ^5 L2 ^/ |" b, j1 G! X
即所有人皆不能讀取副檔名為 .jpg 的檔案
) K7 ~8 w7 T7 o# J, b2 P
4 s9 X: Y( Z& |% p/ l
.htaccess 內寫上:
* X1 j% z7 T+ t1 S1 Y% e
<Files secret.html>
! p J$ t- q3 ?8 b \6 f6 {
order allow,deny
) a9 f# A! k2 w6 ]' ?
allow form all
% N* v- [8 X Z& F* j
deny form 202.202
' o: _* _. l( I
</Files>
0 I4 ^6 v" u: F Z) O
即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
7 j1 e7 q; F! S0 z
: @; ~7 j3 v& c# o6 I! S+ j
.htaccess 內寫上:
. T" ^* ?0 A5 z; Z- ]8 `
<Limit GET>
$ @5 E: z) H3 v+ X+ V
order deny,allow
" a' r$ N" _3 F
deny from all
. {" {: N8 q) m* }( ^
allow from 202.202 domain.com
9 b& r/ [4 ^- A" g: d: U
</Limit>
: t: h# h4 Y l2 d# U
即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
2 z% Y! Q3 q% B5 [: N/ v1 V7 s
' e, R* r1 K: U2 f
.htaccess 內寫上:
; u# |2 O, ^: k, ^1 X R1 ^
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
0 |& @! M6 p5 ~% j
<files sercet.html>
+ c. i2 b/ Z6 d& i& u1 b" a
require user peter
; s6 y$ }1 {. y0 C- X l
</files>
- O# g) G( R: m" Y
即只允許 .htpasswd 內列出的 peter 讀取 sercet.html
% U. h1 ?3 f7 q, i
' o5 ]. ]/ N8 L: r$ g A$ m
5. 重新導向文件
; f4 }! C3 J) ?; g+ z9 R# a
.htaccess 內寫上:
+ V2 s1 f+ o4 M! Y' ?$ b; a# C( w
Redirect /old
http://url/new
& z; _1 @+ [5 u2 A( [
當用戶要求 /old 時,伺服器便把其重新導向至
http://url/new
,或在 .htaccess 內寫上:
" F# X5 y+ j) W7 a' v; h- X( `8 ~
Redirect permanent /old
http://url/new
3 V9 X& J7 \5 q
當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至
http://url/new
; \& w @4 }1 t! h! c- a$ [
; c8 O1 [5 y; k5 d5 _
6. 防止列出目綠內的檔案
6 F. b! z5 u) o# z
.htaccess 內寫上:
. ]: ]. n; T, ` x8 |7 K
Option -Indexes
6 V% Y& {" D' d$ a9 }6 o
這便不能列出檔案目錄了
$ u: J# I: `( T/ ? Q! i* ~
.htaccess 內寫上:
. I- v0 a: U1 e5 f( }- t$ c# L
IndexIgnore *.zip *.txt
# O5 W. s# @8 n: C
這便不列出檔案目錄內的 .zip 與 .txt 檔了
. \* }4 u) z' o. t# q) d
) H5 C: k/ R) {9 C
註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )
作者:
segaa
時間:
2007-3-15 12:25 AM
首先在你要保護的目錄下建立一個名為.htaccess的檔案,內容大致如下:
$ v# @5 {3 g6 N; ?
y+ N9 ^+ Y( _$ e; C' Q- z& U& l
# 隨便取個名字吧,它會出現在瀏覽器的蹦出視窗中。
P1 h& O4 K* f" V' k5 x
AuthName 阿達的祕密基地
" s4 C: c5 K g! a: s* l
# 編碼方式,目前只支援Basic一種而已。
) L- o' o& v4 L/ U
AuthType Basic
1 Z' J6 R" r; l& k. R) H- E) C! n6 _
# 密碼檔的絕對路徑,可用htpasswd指令建立。
; m* y9 r. W; ~% [
AuthUserFile /home/.../filename
5 ^6 n* H8 o$ b" E6 \0 ^/ g7 N2 M
# 若下面有指定 require group,則需要group檔的絕對路徑。
2 A$ ]* J& U0 v" L
AuthGroupFile /home/.../filename
8 [, v" w! l! |+ I
# }5 t8 y0 A' c
<Limit GET POST>
% G; o8 g: Z& _: S; x
require user user1 user2 ...
" v+ W( x2 s. s) \
require group group1 group2 ...
; s2 q$ J6 }8 Y' ^6 B9 i1 G5 |- _ g
</Limit>
( f! o5 E3 @8 s" R- w7 \
% Q0 Z0 g! H( x0 m7 ]- _2 j
& t" c( p: I, Q
它的密碼認證方式有二種,一種是指定users,也就是只有指定的username才有資格進入這個受保護的目錄。另一種是則指定group,凡屬於指定的group的users才有資格進入這個受保護的目錄,而group中到底有哪些users是記錄在AuthGroupFile中所指定的檔案,users的密碼檔則是指定在AuthUserFile中。且讓我們來看看這兩個檔的格式:
( O! p' H7 H# Y7 K% V
, J5 T0 |. V5 e7 {7 t
group檔:
4 D i6 z+ i' m6 E" D, G
group1:user1 user2 ...
, v& ]4 u( [, K8 B$ m
group2:user3 user4 ...
& |, H% J5 f5 |. g
...
0 |& X% k' ?. d _; C0 D
' Q6 U# X* {0 R& j5 W
passwd檔:
5 p" e7 \6 K' A- n+ q7 m* |
user1:password
- n8 b9 j/ O: a% l+ f8 @
user2:password
/ M# I9 ]; `0 R. k
...
0 V) G" l c8 j: _, q0 g
# u1 k0 G1 Y" w; H
密碼檔裡的密碼是編碼過的,你可以使用htpasswd指令來建立密碼檔或新增users。而且由於密碼是用crypt函數編碼的,所以你也可以自己寫個CGI程式來新增users。
* C7 X5 Y$ d+ M: g( g0 Y
- ^% h" {( z; O$ q- T0 l' N5 H
另外還有個安全問題要提醒你:密碼檔不要放在www文件的樹目錄中,最好是放在www目錄外面,以免密碼檔被不法之徒偷去猜密碼。
( ^: A8 g0 D4 w% U' Z& ?
+ L# T. Y" Y) t& e- U. m- X. D
OK!!就這麼簡單,現在你可以試試看成功了沒...
歡迎光臨 幸運草之戀 (http://discuz.segaa.net/)
Powered by Discuz! 6.0.0