Điều Hướng Bảo Mật Website Bằng Htaccess
htaccess không còn gì là xa lạ với tất cả các bạn thiết kế web php và các bạn sử dụng, chức năng quan trọng nhất của nó chính là điều chỉnh lại đường dẫn thân thiện với người dùng. Trong bài viết này mình sẽ hướng dẫn các bạn sử dụng htaccess để điều hướng và bảo mật website.
Việc đầu tiên chúng ta cần làm là bật chức năng rewrite lên bằng cách thêm đoạn dưới vào đầu file .htaccess
Options +FollowSymlinks RewriteEngine on
Chuyển Hướng
Các website hiện nay hầu như đều có tính năng này, ví dụ bạn đang truy cập vào một đường dẫn mà nội dung đó không tồn tại trên website thì trình duyệt quay một hồi lâu rồi trả về lỗi 404 mặc định của trình duyệt, chúng ta chuyển hướng nó đến một file mà chúng ta tạo sẵn và hiển thị theo cách chúng ta muốn nhằm thân thiện với người dùng, tốt cho Seo…
sau đây là đoạn code ví dụ về chuyển hướng khi lỗi 404
Options +FollowSymlinks RewriteEngine on ErrorDocument 404 http://www.abc.com/404.html
như trong ví dụ trên khi nội dung bị lỗi và nhận được kết quả trả về là 404 thì sẽ chuyển đến file 404.html, chúng ta tạo ra file này, thiết kế giao diện theo cách của chúng ta.
Ngoài lỗi 404 chúng ta có thể thiết kế riêng cho từng trường hợp mà chúng ta muốn như đoạn code bên dưới
ErrorDocument 401 /error_401.html ErrorDocument 403 /error_403.html ErrorDocument 404 /error_404.html ErrorDocument 400 /error_400.html
chúng ta nên sử dụng đường dẫn tương đối như trên để khi chúng ta thay đổi tên miền thì file .htaccess vẫn có thể hoạt động được.
Hiển Thị Trang index.html Giả
Đây là một yếu tố rất quan trọng trong bảo mật, ví dụ trong trường hợp người nào đó truy cập vô một thư mục mà ở đó không có file index.html hoặc index.php thì nó sẽ hiện tất cả các thư mục, file hiện có. Người dùng có thể dễ dàng nhìn thấy cấu trúc website và những file nhạy cảm cũng dễ dàng nhìn thấy, bạn đâu có muốn người lạ biết rõ đường đi và mọi ngóc ngách trong nhà của bạn đúng k?
Options All -Indexes # dòng lệnh sẽ hiện một thông báo Forbidden thay vì liệt kê các danh mục và file
Thiết Lập Trang Mặc Định Mới
Thông thường thì trang mặc định sẽ là index.html hoặc là index.php, bạn có thể thay đổi tên khác nếu như bạn muốn bằng dòng lệnh sau:
DirectoryIndex newindex.html
Bạn có thể đổi thành bất kỳ tên gì bạn muốn không nhất thiết thiết là “newindex.html”
Bảo Vệ Các File Nhạy Cảm Và Quan Trọng
Trong website của chúng ta có ít nhất 1 file cần giấu đi ví dụ như: file cấu hình kết nối ( config.php, wp-config.php, .htccess, index.php…) tùy theo mô hình website khác nhau mà các file sẽ khác nhau.
Để bảo vệ file chúng ta làm như sau
# bảo vệ file .htccess <Files .htaccess> Order Allow,Deny Deny from all </Files> # bảo vệ file wp-config <Files wp-config.php> Order Allow,Deny Deny from all </Files>
Nếu người khác chiếm được file .htccess thì có thể điều hướng, phân quyền, truy cập vào các thư mục và các file khác, hoặc file cấu hình chứa các kết nối tới mysql và các thông tin quan trọng khác.
Các bạn có thể thay .htccess hoặc wp-config.php thành file mà bạn muốn và cùng cấp với file htaccess nhé.
Đặt Mật Khẩu Cho Folder
Thư mục admin để quản trị website là thư mục quan trọng nhất trong website, nên các bạn cần đặt mật khẩu để bảo vệ, chống những kẻ xấu xâm nhập trái phép.
Đầu tiên bạn tạo file tên là .htpasswd tại vị trí /demo/htpasswd với cấu trúc như sau: MyUsername:MyPassword
MyUsername: bạn có thể đặt bất kỳ tên nào mà bạn muốn.
MyPassword: mật khẩu mã hóa, bạn có thể tạo file .htpasswd online tại http://www.htaccesstools.com/htpasswd-generator/
Sau đó trong file htaccess bạn thêm đoạn sau để bảo vệ file:
# thông báo khi bắt đăng nhập AuthName "Ban phai nhap username va pass de tiep tuc" AuthType Basic # nơi chứa file .htpasswd tính từ file htaccess AuthUserFile /demo/.htpasswd AuthGroupFile /dev/null # file cần được bảo vệ <Files admin.php> require valid-user </Files>
Bạn có thể bảo vệ đồng thời nhiều file bằng cấu trúc <Files admin.php, admin2.php>
Nếu bạn bảo vệ thư mục thì bạn dời file .htaccess vào trong thư mục muốn bảo vệ, nội dung file như sau:
AuthName "Ban phai nhap username va pass de tiep tuc" AuthType Basic AuthUserFile /demo/.htpasswd require valid-user
Chống Chạy File – Lấy Hình Ảnh Qua Website Khác
Trong nhiều trường hợp người khác copy bài viết của bạn và vẫn để nguyên đường dẫn hình ảnh của bạn để tiết kiệm được băng thông, dung lượng và tăng tốc. Bạn làm cách sau để ngăn chặn nhé
#chong trom file RewriteEngine on RewriteCond % !^$ RewriteCond % !^http://(www\.)?tenmiencuaban.com/.*$ [NC] RewriteRule \.(gif|jpg|png)$ – [F] RewriteRule \.(gif|jpg|png)$ http://www.tenmiencuaban.com/file.jpg [R,L]
Loại Bỏ, Thêm WWW Trên Đường Dẫn
Đây là một yếu tố khá quan trọng trong SEO, nếu hai đường dẫn khác nhau nhưng nội dung giống nhau thì bạn bị phạm lỗi trùng lập nội dung, nên chúng ta cần đưa nó về một đường dẫn duy nhất để tối ưu web chúng ta lại.
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !^tenmiencuaban.com$ [NC] RewriteRule ^(.*)$ http://tenmiencuaban.com/$1 [L,R=301]
hoặc bạn có thể thêm www vào cũng được
RewriteEngine on RewriteCond %{HTTP_HOST} ^tenmiencuaban.com RewriteRule ^(.*)$ http://www.tenmiencuaban.com/$1 [R=permanent,L]
Tổng Kết: đây là một yếu tố rất quan trọng nếu như bạn đang sử dụng apache làm web server cho bạn, bạn cần lưu ý là trước khi chạy các dòng lệnh trên thì bạn phải bật mod rewrite lên trước nhé.