htaccess - password protection

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 đặt require 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 >