htaccess - password protection
- Thật ra mục đích ban đầu của htaccess là ngăn chặn người dùng truy cập vào folder, bằng cách yêu cầu người dùng nhập thông tin đăng nhập khi truy cập vào nội dung được chỉ định nào đó.
- Bài học này sẽ giúp các bạn bảo vệ folder bằng cách yêu cầu đăng nhập username/password khi người dùng access vào folder được chỉ định.
Tạo .htpasswd
- Tạo file
.htpasswd
(chú ý viết cho đúng tên nhé) như cách đã tạo ra file.htaccess
với nội dung là username và password được tạo trên một dòng duy nhất:
username:password
Ví dụ:
hocwebchuan:EPL80vp2cL
- Với
.htpasswd
được đặt ở bất kỳ nơi nào, VD đặt ở/pass/.htpasswd
, tuy nhiên đây là file bí mật, nên nó cũng nên đặt ở nơi bí mật, sẽ chỉ có thể truy cập từ chính server (setting không cho truy cập trực tiếp.htpasswd
hoặc chặn truy cập.htpasswd
từ server).
Đặt password cho folder
- Đặt file
.htaccess
tại thư mục nào mà bạn muốn bảo vệ, được viết như sau:
AuthUserFile đường_dẫn_tuyệt_đối/.htpasswd AuthName "Name of Secure Area" AuthType Basic <Limit GET POST> require tên_username </Limit>
AuthUserFile đường_dẫn_tuyệt_đối/.htpasswd
đường dẫn tới.htpasswd
bắt buộc phải là đường dẫn tuyệt đối, ví dụ trên server, file.htpasswd
bạn đặt tại/home/hocwebchuan/pass/.htpasswd
, thì bạn cần dẫn đúng đường dẫn như vậy.AuthType Basic
khai báo sử dụng loại xác thực cơ bản (Auth basic)Limit GET POST
giới hạn phương thức GET hay POST, trường hợp này bạn dùng được cả 2, trường hợp không dùng phương thức, thì bạn không cần đặtrequire
bên trong<Limit>
.require tên_username
đây là tên username bạn khai báo tại file.htpasswd
Ví dụ:
AuthUserFile /home/hocwebchuan/pass/.htpasswd AuthName "Đây là thư mục được bảo vệ" AuthType Basic <Limit GET POST> require hocwebchuan </Limit>
Đặt password cho file
- File
.htaccess
được tại thư mục chứa file mà bạn muốn bảo vệ, được viết như sau:
<files đường_dẫn_tới_file> AuthUserFile đường_dẫn_tuyệt_đối/.htpasswd AuthName "Name of Secure Area" AuthType Basic <Limit GET POST> require tên_username </Limit> </files>
- Các dùng tương tự như cho folder, chỉ cần thêm nội dung xử lý cho file.
Ví dụ:
<files /event/new_event.php> AuthUserFile /home/hocwebchuan/pass/.htpasswd AuthName "Đây là file được bảo vệ" AuthType Basic <Limit GET POST> require hocwebchuan </Limit> </files>
Đặt password cho nhiều file
- File
.htaccess
được tại thư mục chứa những file mà bạn muốn bảo vệ, được viết như sau:
<filesMatch "^(file1|file2).*$"> AuthUserFile đường_dẫn_tuyệt_đối/.htpasswd AuthName "Name of Secure Area" AuthType Basic <Limit GET POST> require tên_username </Limit> </filesMatch >
- Các dùng tương tự như cho file, ta chỉ cần sử dụng
filesMatch
và ghi tên các file tương ứng.
Ví dụ:
<filesMatch "^(private|phpinfo).*$"> AuthUserFile /home/hocwebchuan/pass/.htpasswd AuthName "Đây là các file được bảo vệ" AuthType Basic <Limit GET POST> require hocwebchuan </Limit> </filesMatch >