15 đoạn .htaccess hữu ích cho trang WordPress

14/07/2017

Việc cấu hình tốt cho file .htaccess là tối cần thiết cho bất kì một admin nào, vì nó có thể bảo vệ website hay blog của các bạn và giảm thiểu đáng kể những thành phần cố tình muốn hack trang web của các bạn.

Nếu các bạn giỏi về quản trị server hay hiểu rõ về .htaccess thì khỏi phải bàn, nhưng nếu các bạn cũng gà mờ giống như mình thì những đoạn code mà mình chia sẻ bên dưới sẽ cực kì hữu ích. Các bạn chỉ cần copy và sử dụng chúng theo các tính năng mà nó mang lại.

15 đoạn .htaccess hữu ích cho trang WordPress

Thông thường, thì mặc định trong file .htaccess sẽ có đoạn code như sau :

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Vì nó là mặc định nên chúng ta sẽ không thêm hay xoá bất kì dòng nào cả (trừ phi các bạn hiểu về nó). Và dưới đây là những đoạn mà chúng ta sẽ thêm vào tuỳ theo tính năng mà nó mang lại.

1. Cấm truy xuất đến file .htaccess

Nếu các bạn không muốn bất kì ai có thể thấy được bạn cấu hình cái gì trong file .htaccess thì đoạn code bên dưới làm rất tốt điều đó.

# Denies access to all .htaccess files
<Files ~ "^.*\.([Hh][Tt][Aa])">
Order Allow,Deny
Deny from all
Satisfy all
</Files>

2. Ngăn ngừa tấn công vào file wp-config.php

File wp-config.php là file chứa tất cả các cấu hình như user và password của database. Đây là những thông tin rất quan trọng cần được bảo vệ. Trong đoạn code bên dưới, các bạn chỉ cần thay thế kí tự xx.xx.xx.xxx là địa chỉ IP từ máy admin, điều đó có nghĩa là chỉ có admin mới được truy xuất file này. Khi chỉnh sửa các bạn cũng nhớ là bỏ kí tự # ở phía trước đi nhé.

# Protects wp-config
<Files wp-config.php>
Order Allow,Deny
# Allow from xx.xx.xx.xxx
# Allow from yy.yy.yy.yyy
Deny from all
</Files>

3. Ngăn ngừa các cuộc tấn công từ XML-RPC DDoS

Mặc định thì WordPress hỗ trợ XML-RPC, và đây cũng chính là điểm yếu để các hacker khai thác và tấn công. Để bảo vệ nó thì các bạn chỉ cần thay thế dòng xx.xx.xx.xxx là địa chỉ IP của admin là được.

# Protects XML-RPC, prevents DDoS attack
<FilesMatch "^(xmlrpc\.php)">
Order Deny,Allow
# Allow from xx.xx.xx.xxx
# Allow from yy.yy.yy.yyy
Deny from all
</FilesMatch>

4. Bảo vệ khu vực admin

Sẽ không bao giờ là dư thừa khi các bạn cần phải bảo vệ những kẻ lạ mặt truy xuất vào khu vực admin trên trang web. Và lần này cũng như những đoạn code bên trên, các bạn chỉ cần đặt vào những IP được phép truy cập vào khu vực này bằng việc thay thế những kí tự xx.xx.xx.xxx hoặc yy.yy.yy.yyy.

# Protects admin area by IP
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic
<LIMIT GET>
Order Deny,Allow
Deny from all
Allow from xx.xx.xx.xxx
Allow from yy.yy.yy.yyy
</LIMIT>

5. Ngăn ngừa liệt kê thư mục

Có rất nhiều bạn khi quản trị trang WordPress đã không để ý việc vô hiệu hoá tính năng này. Vì nếu không, thì ai cũng có thể liệt kê được những file có trong các thư mục như media upload, plugin.. như hình bên dưới.

15 đoạn .htaccess hữu ích cho trang WordPress

Rất may là đoạn code bên dưới sẽ giúp các bạn giải quyết được vấn đề này. Khi người dùng cố tình vào các thư mục , thì nó sẽ tự động chuyến đến trang thông báo lỗi 403.

# Prevents directory listing
Options -Indexes

6 Ngăn chặn Brute Force Attack

Brute Force Attack là một dạng tấn công mà các hacker lấy thông tin username hoặc thông tin cá nhân từ các tài khoản, rồi dùng một phần mềm tự động tạo mật khẩu cho tới khi nó có thể đăng nhập được vào hệ thống. Để có thể giảm thiểu loại tấn công này, các bạn chỉ việc copy đoạn code bên dưới vào file .htaccess.

# Prevents username  enumeration
RewriteCond %{QUERY_STRING} author=d
RewriteRule ^ /? [L,R=301]

7. Loại bỏ các spammer và bots.

Nếu các bạn nghi ngờ bị tấn công bởi những địa chỉ IP nào đó, thì chỉ việc thay thế nó bằng những kí tự xx và yy bên dưới.

# Blocks spammers and bots
<Limit GET POST>
Order Allow,Deny
Deny from xx.xx.xx.xxx
Deny from yy.yy.yy.yyy
</Limit>
Allow from all

8. Ngăn ngừa  image hotlinking

Image hotlinking là một thuật ngữ ám chỉ một ai đó lấy hình ảnh bằng việc copy luôn đường dẫn URL hình ảnh từ website của các bạn, và hiển thị nó trên website của họ mà không có sự cho phép của các bạn. Nếu các bạn cảm thấy ngứa con mắt khi ai đó làm việc này, thì chỉ việc thay thế địa chỉ website mà họ sử dụng hình ảnh của các bạn vào.

# Prevents image hotlinking
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite2.com [NC]
RewriteRule \.(jpe?g?|png|gif|ico|pdf|flv|swf|gz)$ - [NC,F,L]

9. Hạn chế truy xuất trực tiếp vào plugin & theme PHP files

Thật là nguy hiểm nếu ai đó có thể truy xuất trực tiếp vào các file này mà không thèm xin ý kiến các bạn. Chỉ cần copy đoạn code bên dưới. là các bạn đã có thể đá đít những kẻ lạ mặt cố tính muốn phá website của các bạn.

# Restricts access to PHP files from plugin and theme directories
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/
RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L]
RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/
RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]

10. Cài đặt permanent redirects

Nếu trang web của các bạn có một số link đã bị xoá, hoặc cập nhật bởi những link mới, thì đoạn code bên dưới sẽ giúp các bạn tự động chuyển link cũ (oldurl) tới link mới (newurl).

# Permanent redirects
Redirect 301 /oldurl1/ http://yoursite.com/newurl1
Redirect 301 /oldurl2/ http://yoursite.com/newurl2

11. Đưa khách truy cập đến trang bảo trì.

Có đôi lúc chúng ta cần thời gian để bảo trì website, và không thể để khách viếng thăm web của chúng ta thấy được công việc còn đang dang dở, việc tự động đẩy họ vào trang bảo trì (maintenance.html ) sẽ là cần thiết.

# Redirects to maintenance page
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000
RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.html [R=503,L]
</IfModule>

12. Ngăn chặn truy cập vào WP includes

Wp-includes folder chứa những file cốt lõi nhất của trang WordPress, việc bảo vệ folder này là tối cần thiết.

# Blocks all wp-includes folders and files
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

13 Ngăn ngừa tấn công kiểu XSS

Chỉ cần copy đoạn code bên dưới là các bạn có thể ngăn chặn được loại tấn công này.

# Blocks some XSS attacks
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F,L]
</IfModule>

14 Bật tính năng browser caching

Bằng việc copy đoạn code bên dưới, là các bạn có thể bật được tính năng cache, sẽ giúp trang web của các bạn chạy nhah hơn và đáp ứng khách hàng tốt hơn.

# Enables browser caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>

15 Cài đặt tuỳ chỉnh error page

Các bạn tạo những trang thông báo lỗi cho riêng mình như custom-403.html , custom-404.html rồi upload nó vào folder gốc. Sau đó dùng đoạn code bên dưới để nó chuyển tới những trang này.

# Sets up custom error pages
ErrorDocument 403 /custom-403.html
ErrorDocument 404 /custom-404.html

Mình hy vọng là những đoạn code bên trên sẽ giúp ích cho các bạn trong việc bảo vệ và duy trì website hay blog của các bạn.

Chuyên Mục: ,

Bài viết được đăng bởi webmaster

Nếu các bạn thấy bài viết hữu ích thì giúp mình Like cái nhé !