Căn bản về. htaccess và .htpasswd

iLoVeU

Moderator
Căn bản về. htaccess và .htpasswd
(Xuân Nguyên
Email: vietnamxn@gmail.com)



Tình yêu tưởng không gì chia cắt
Vậy mà tan trong sương gió mong manh
(Nguyễn Phan Hách)

Chắc chắn rằng hầu như tất cả mọi người đều đã nghe nói về 2 tập tin .htaccess và .htpasswd. Tuy nhiên theo những gì Xuân Nguyên quan sát thấy, nhiều bạn tuy đã nghe nói nhưng vẫn chưa biết tạo và sử dụng 2 tập tin này như thế nào. Bài viết này ra đời nhằm giải quyết vấn đề đó.

1.Bắt đầu

Đầu tiên, bạn phải có một web service là Apache vì .htaccess và .htpasswd chạy trên môi trường này. Hệ điều hành gì cũng được.
Trong Apache, bạn tìm đến tập tin cấu hình httpd.conf (cũng có khi là access.conf ) mở nó lên và tìm đến đoạn mã sau :

<Directory /var/www>

Options Indexes FollowSymLinks

AllowOverride None

order allow,deny
allow from all

</Directory>
Thay thế dòng AllowOverride None thành AllowOverride AuthConfig rồi lưu lại, sau đó khởi động lại Apache. Vậy là bạn đã có thể sử dụng được 2 tập tin này.

2.Tạo ra tập tin .htaccess và .htpasswd

Bạn có thể sử dụng bất cứ một chương trình soạn thảo nào để tạo ra 2 tập tin này. Ở đây tôi dùng notepad.
Mở notepad lên, gõ nội dung bạn muốn sử dụng sau đó lưu lại với tên là .htaccess

Chú ý :
khi lưu, trong ô Save as type bạn chọn là All Files
Vậy là xong, chúng ta đã có một tập tin .htaccess
Làm tương tự nếu bạn muốn tạo ra tập tin .htpasswd


3. Sử dụng 2 tập tin này

tập tin .htaccess có tác dụng ảnh hưởng lên các thư mục ngang hàng với nó và các thư mục con.
Một số lệnh sử dụng đối với tập tin này là

Cấm IP truy cập:

Ví dụ có ai đó flood site bạn, hay có ai đó bạn ghét không cho muốn nó xem website của bạn thì trong file .htaccess bạn gõ lệnh

deny from IP_ bạn_ muốn_ cấm

VÍ dụ:
deny from 215.182.35.46

Nếu bạn viết
deny from 215.182.35
sẽ cấm tất cả các IP nằm trong dãy từ 215.182.35.1 đến 215.182.35.255

Chuyển truy suất sang địa chỉ khác

Bạn chuyển truy suất vào trang web cũ của mình sang một trang khác bạn mới tạo chẳng hạn bằng lệnh

Redirect /thư_ mục_ cũ http:/www.website_mới.com/thư_ mục_ mới

Không hiện các tập tin trong thư mục

Trường hợp một thư mục không có tập tin mặc định index hay default, Apache sẽ hiển thị danh sách những tập tin có trong thư mục đó. Nếu bạn không muốn người khác thấy, trong file .htaccess viết vào lệnh

Options –Indexes

Còn một số thứ như :Tạo trang báo lỗi, chống ăn cắp băng thông (bandwidth), dấu files, thay thế trang index mặc đình bằng trang khác, tuỳ biến đuôi tập tin….các bạn tự tìm hiểu nhé.

Bảo vệ thư mục

Ở đây mình tập trung vào việc dùng 2 file .htaccess và .htpasswd trong vấn đề bảo vệ thư mục và có thể là chống flood nữa ( vấn đề chống flood bằng .htaccess bạn có thể xem lại bài viết của anh H2P)

Bạn tạo một file .htaccess có nội dung như sau

AuthUserFile “đường dẫn đến tập tin .htpasswd”
AuthName “dòng văn bản hiển thị”
AuthType Basic
require valid-user
valid-user sẽ chỉ định các thành viên với mật khẩu trong tập tin .htpasswd , nếu bạn muốn chỉ định rõ một thành viên nào đó thì thay đổi dòng này như sau:
require user tên_user

Sau đó bạn tạo một file .htpasswd với nội dung như sau:

User: password

Ví dụ:

Ví dụ chúng ta có một file .htaccess như sau:

AuthUserFile "/home/username/public_html/forum/.htpasswd"
AuthName "Anti Stupid Flooders! User=anti Pass=1 khoang trang"
AuthType Basic
require valid-user
Ở đây
/home/username/public_html/forum/.htpasswd ->chính là đường dẫn đến tập tin .htpasswd

Firewall: User=anti Pass=$# ->đây là dòng chữ hiện thị trên bảng đăng nhập, bạn muốn viết gì cũng được ( khi bạn vào forum.vnbrain.net có một bảng hiện lên hỏi user và pass, nhìn trên bảng bạn sẽ thấy dòng chữ này)

Và chúng ta cũng sẽ có một file .htpasswd có nội dung như sau
123456:12tir.zIbWQ3c

123456 ->chính là user
12tir.zIbWQ3c ->chính là password đã được mã hóa
@Sưu tầm !
 

iLoVeU

Moderator
Bằng việc khai thác tập tin cấu hình .htaccess trên Apache server, bạn có thể thực hiện được rất nhiều việc khác nhau như cấu hình lại file error, viết lại url, ... dưới đây là một số thủ thuật nữa mà bạn có thể sử dụng với .htaccess

1. Chống hotlink:
Hotlink nghĩa là một tập tin của ta được đọc trực tiếp từ trang khác. Thí dụ: bạn có một ảnh JPEG rất đẹp 200KB ở máy chủ của bạn, nhưng người khác lại dùng thẻ <IMG> để hiển thị hình ảnh này ở trang web của họ. Đây là hành vi ăn cắp băng thông của bạn, vì mọi người xem không ai biêt rằng cái ảnh đó của bạn, và bạn đã mất băng thông một cách vô ích.
Rất may, hầu hết các trình duyệt khi yêu cầu một tập tin đều có gửi kèm một thông số cho biết nó được yêu cầu từ trang web nào. Vậy bạn chỉ cần đơn giản một câu kiểm tra là xong.
Mã:
   RewriteEngine on 
   RewriteCond %{HTTP_REFERER} !^$ 
   RewriteCond %{HTTP_REFERER} !^http://(www\.)?yoursite\.com.*$ [NC] 
   RewriteCond %{HTTP_REFERER} !^http://your-ip.*$ [NC] 
   RewriteRule .*\.(jpg|gif)$ http://www.yoursite.com/hotlink.jpg [NC]
Trong đó hotlink.jpg là ảnh sẽ thay thể các ảnh kia (bạn có thể ghi một câu thông báo chẳng hạn vào tấm ảnh đó). Và tất cả ảnh được link đến từ trang khác sẽ không hiện ra, mà được thay bằng ảnh hotlink.jpg. Tất nhiên, bạn có thể sửa lại để ngăn các tập tin khác ngoài GIF và JPG.
Đôi khi, bạn muốn chống hotlink trong thư mục gallery thôi chẳng hạn, thì dòng cuối cần sửa lại thành:

RewriteRule .*gallery.*\.(jpg|gif)$ http://www.yoursite.com/hotlink.jpg [NC]

2. Trang báo lỗi:
Bình thường, khi gặp lỗi, bạn sẽ nhận được một thông báo chán ngắn từ Apache. Tuy nhiên, với .htaccess bạn có thể tuỳ biến trang thông báo này. Thí dụ sau tạo thông báo lỗi tuỳ biến cho các lỗi 403 (cấm truy cập) và 404 (trang không tồn tại), trong đó nội dung file error_forbidden.htm và error_notfound.htm do bạn quyết định, ví dụ như đưa ra một form tìm kiếm nội dung trong trang, cấu hình lại đúng đối số trên trang vv...:

Mã:
   ErrorDocument 403 /error_forbidden.htm 
   ErrorDocument 404 /error_notfound.htm
3. Chọn trang web theo thời điểm:Đoạn mã sau đây sẽ hiển thị trang sleep.htm nếu ai đó truy cập vào trang của bạn trong khoảng 1 đến 4 giờ sáng:

Mã:
 RewriteEngine on 
   RewriteCond %{TIME_HOUR}%{TIME_MIN} >0100 
   RewriteCond %{TIME_HOUR}%{TIME_MIN} <0400 
   RewriteRule ^.*$ http://www.yourdomain.com/sleep.htm
4. Nhắc nhở bật cookie:
Bạn bắt buộc người dùng phải chấp nhận cookie, và muốn kiểm tra cookie đã được thiết lập hay chưa. Rất đơn giản, đoạn sau sẽ thay tất cả các ảnh một một tấm ảnh kêu người dùng bất cookie (cookies/enable.gif là hình báo nhắc nhở bật cookie).

Mã:
   RewriteEngine on 
   RewriteCond %{HTTP_COOKIE} !^.*cookies=true.*$ 
   RewriteRule .*[Jj][Pp][Gg]$|.*[Gg][Ii][Ff]$ /cookies/enable.gif
5. Chặn ip của ai đó:Đôi khi bạn muốn giới hạn một trang nào đó chỉ cho phép 1 vài người truy cập (như khu vực Admin), hoặc cho tất cả trừ một vài người không được phép truy cập vào (ngăn những ip đang flood). Cả hai trường hợp này có thể giải quyết nhẹ nhàng nhờ .htaccess

5.1. Chỉ cho phép một số ip truy cậpĐầu tiên ta cấm tất cả, sau đó cho phép một số:

Mã:
   order deny,allow 
   deny from all 
   allow from 127.0.0.1 
   allow from 192.168.0.1
Chỉ cho phép ip 127.0.0.1 và 192.168.0.1 truy cập vào trang web (nếu bạn đặt .htaccess ở thư mục gốc). Để cấm thư mục admin, bạn đặt nó vào thư mục admin.

5.2. Cấm một số ip truy cập

Mã:
   order allow,deny 
   allow from all 
   deny from 203.113.135.6 
   deny from 203.162.*
Cấm ip 203.113.135.6 và tất cả các ip bắt đầu bằng 203.162

6. Thay thế trang index:
Thông thường khi truy nhập vào một trang web, Apache sẽ tìm tập tin index.htm(l) hoặc default.htm(l) trả kết quả về cho trình duyệt, bạn có thể dùng .htaccess thay đổi mặc định này.

DirectoryIndex index.php emyeu.htm index.html index.htm

Với dòng lệnh này thì tất cả các tập tin được liệt kê sẽ được tìm theo thứ tự (lần lượt là index.php, emyeu.htm, rồi đến index.html, index.htm) khi có yêu cầu tới thư mục hiện hành, trang nào được tìm thấy đầu tiên sẽ thành trang index của thư mục.
Trong trường hợp một thư mục nào đó không có tập tin index, Apache sẽ hiển thị một danh sách liệt kê những tập tin có trong thư mục đó. Tuy nhiên nếu đây là những tài liệu nhạy cảm, bạn không muốn cho liệt kê nội dung thì có thể làm bằng nhiều cách sau:
Cách đầu tiên là đặt vào đó một tập tin index.html mặc định
Cách khác là không cho hiện nội dung thư mục bằng .htaccess

Options -Indexes

Cách cuối cùng là đặt index mặc định nếu index.html không tìm thấy:

Mã:
DirectoryIndex index.php index.html index.htm /noindex.html
Trong trường hợp này, bạn tạo tập tin /noindex.html, khi đó nếu Apache không tìm thấy index.*, nó sẽ đọc noindex.html ở thư mục gốc. Nghĩa là bạn luôn có tập tin index.



nguồn:4u.jcisio.com
 
Bên trên