Hướng dẫn tối ưu file .htaccess cho web được bảo mật hơn

Sau khi đã tìm hiểu về robots.txtwp-config.php, file .htaccess là mảnh ghép tiếp theo trong bộ ba tối ưu website WordPress ở cấp độ server. File này cực kỳ mạnh mẽ, cho phép bạn điều khiển cách web server (Apache) tương tác với website của bạn, từ chuyển hướng URL đến bảo mật và tối ưu hiệu suất.

Giống như wp-config.php, luôn luôn sao lưu file .htaccess trước khi thực hiện bất kỳ thay đổi nào! Một lỗi nhỏ có thể khiến website của bạn không thể truy cập được.


Hướng Dẫn Tối Ưu File .htaccess để Bảo Mật WordPress

File .htaccess Nằm Ở Đâu?

File .htaccess cũng nằm ở thư mục gốc của cài đặt WordPress của bạn, cùng cấp với wp-config.php và thư mục wp-content. Nếu bạn không thấy nó, có thể nó bị ẩn (vì là file hệ thống bắt đầu bằng dấu chấm) hoặc chưa được tạo. WordPress sẽ tự động tạo file này khi bạn cài đặt permalinks (Đường dẫn tĩnh) lần đầu tiên.

Cấu Trúc Cơ Bản của .htaccess trong WordPress

Một file .htaccess tiêu chuẩn của WordPress trông như thế này:

Apache

# 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

Không chạm vào các dòng giữa # BEGIN WordPress# END WordPress trừ khi bạn biết chính xác mình đang làm gì. Đây là cấu hình mặc định để permalinks của WordPress hoạt động. Bạn sẽ thêm các quy tắc bảo mật của mình bên ngoài khối này, thường là trước dòng # BEGIN WordPress.


Các Quy Tắc Bảo Mật .htaccess Quan Trọng

Dưới đây là các quy tắc bạn có thể thêm vào file .htaccess để tăng cường bảo mật cho website WordPress của mình:

1. Bảo Vệ File wp-config.php

Đây là file quan trọng nhất của WordPress, chứa thông tin kết nối database nhạy cảm. Bạn nên ngăn chặn mọi truy cập trực tiếp vào file này từ trình duyệt.

Apache

<Files wp-config.php>
    Order allow,deny
    Deny from all
</Files>

Giải thích: Quy tắc này chặn mọi yêu cầu truy cập trực tiếp vào wp-config.php từ bất kỳ địa chỉ IP nào.

2. Vô Hiệu Hóa Duyệt Thư Mục (Directory Browse)

Nếu không có file index.php hoặc index.html trong một thư mục, server có thể hiển thị danh sách tất cả các file trong thư mục đó. Điều này có thể tiết lộ cấu trúc file và thông tin nhạy cảm cho kẻ tấn công.

Apache

Options -Indexes

Giải thích: Dòng này sẽ vô hiệu hóa chức năng hiển thị danh sách thư mục cho toàn bộ website.

3. Bảo Vệ File .htaccess Chính Nó

Mặc dù hiếm khi bị tấn công trực tiếp, bạn có thể thêm một lớp bảo vệ cho chính file .htaccess.

Apache

<Files .htaccess>
    Order allow,deny
    Deny from all
</Files>

Giải thích: Tương tự như wp-config.php, quy tắc này ngăn chặn truy cập trực tiếp vào file .htaccess.

4. Vô Hiệu Hóa Thực Thi PHP trong Một Số Thư Mục

Các thư mục như wp-content/uploads/ thường chỉ chứa ảnh, video và các file media khác. Kẻ tấn công có thể cố gắng tải lên mã độc PHP vào đây. Bằng cách vô hiệu hóa thực thi PHP trong thư mục này, bạn có thể ngăn chặn mã độc đó chạy.

Cách thực hiện: Tạo một file .htaccess mới bên trong thư mục wp-content/uploads/ (chứ không phải thư mục gốc) và thêm vào đó nội dung sau:

Apache

# Deny access to all files except common image/media types
<FilesMatch "\.(php|phtml|php\d|phps|cgi|pl|py|asp|aspx)$">
    Order allow,deny
    Deny from all
</FilesMatch>

Giải thích: Quy tắc này chặn mọi yêu cầu thực thi các loại file script (PHP, CGI, ASP, v.v.) trong thư mục uploads.

5. Chặn Truy Cập vào XML-RPC (Nếu không sử dụng)

File xmlrpc.php thường là mục tiêu của các cuộc tấn công Brute-force hoặc DDoS. Nếu bạn không sử dụng tính năng này (ví dụ: không đăng bài từ xa bằng ứng dụng di động hoặc không dùng Jetpack), bạn nên chặn nó.

Apache

<Files xmlrpc.php>
    Order allow,deny
    Deny from all
</Files>

Giải thích: Chặn mọi yêu cầu truy cập vào xmlrpc.php. Lưu ý: Nếu bạn dùng Jetpack hoặc các ứng dụng/plugin khác dựa vào XML-RPC, việc chặn này có thể gây lỗi.

6. Chặn Tác Giả Có Tên Người Dùng Đáng Ngờ (Author Scan)

Kẻ tấn công thường cố gắng tìm tên người dùng bằng cách truy cập các URL tác giả (ví dụ: yourdomain.com/?author=1). Quy tắc này sẽ chuyển hướng các yêu cầu đó đến trang chủ hoặc một trang khác, giúp che giấu tên người dùng.

Apache

# Block author scans
RewriteEngine On
RewriteCond %{QUERY_STRING} author=(\d*)
RewriteRule .* - [F]

Giải thích: Nếu URL chứa author= và một số, quy tắc này sẽ trả về lỗi Forbidden (403).

7. Chặn Truy Cập từ IP Cụ Thể (Nếu bị tấn công)

Nếu bạn phát hiện một địa chỉ IP cụ thể đang cố gắng tấn công website của bạn, bạn có thể chặn nó.

Apache

<Limit GET POST>
    Order Allow,Deny
    Deny from 192.168.1.100  # Thay thế bằng địa chỉ IP cần chặn
    Allow from all
</Limit>

Giải thích: Chặn mọi yêu cầu GET/POST từ địa chỉ IP đã cho. Bạn có thể liệt kê nhiều IP.


Ví Dụ File .htaccess Hoàn Chỉnh (Sau khi thêm các quy tắc bảo mật)

Apache

# BEGIN Custom Security Rules (Thêm các quy tắc bảo mật của bạn  đây)

# 1. Bảo vệ file wp-config.php
<Files wp-config.php>
    Order allow,deny
    Deny from all
</Files>

# 2.  hiệu hóa duyệt thư mục
Options -Indexes

# 3. Bảo vệ file .htaccess chính 
<Files .htaccess>
    Order allow,deny
    Deny from all
</Files>

# 4. Chặn truy cập vào XML-RPC (Chỉ khi bạn không sử dụng)
<Files xmlrpc.php>
    Order allow,deny
    Deny from all
</Files>

# 5. Chặn tác giả  tên người dùng đáng ngờ (Author Scan)
RewriteEngine On
RewriteCond %{QUERY_STRING} author=(\d*)
RewriteRule .* - [F]

# END Custom Security Rules


# 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

Lưu ý quan trọng: Quy tắc vô hiệu hóa thực thi PHP trong uploads phải được đặt trong một file .htaccess riêng bên trong thư mục wp-content/uploads/.


Lời Khuyên Quan Trọng Khi Chỉnh Sửa .htaccess:

  • Sao lưu, sao lưu, sao lưu! Điều này không bao giờ là thừa.
  • Thử nghiệm từng thay đổi một: Sau khi thêm một quy tắc, lưu file và kiểm tra ngay lập tức website của bạn (cả frontend và backend) để đảm bảo không có lỗi xảy ra.
  • Tránh các quy tắc phức tạp nếu không hiểu: .htaccess rất mạnh nhưng cũng rất dễ gây lỗi nếu không được cấu hình đúng. Nếu bạn không chắc chắn, hãy tìm kiếm sự giúp đỡ từ nhà phát triển hoặc chuyên gia.
  • Đôi khi plugin bảo mật tốt hơn: Nhiều plugin bảo mật WordPress (như Wordfence, iThemes Security, Sucuri Security) có thể tự động thêm các quy tắc .htaccess phức tạp và hiệu quả hơn mà không yêu cầu bạn phải tự chỉnh sửa thủ công.
  • Server Nginx không dùng .htaccess: Nếu hosting của bạn sử dụng web server Nginx (thay vì Apache), .htaccess sẽ không hoạt động. Các cấu hình tương tự phải được thực hiện trong file cấu hình Nginx của server, và bạn sẽ cần sự hỗ trợ từ nhà cung cấp hosting. FastPanel có thể sử dụng Nginx.

Việc tối ưu .htaccess là một phần quan trọng để củng cố “bức tường” bảo mật cho website WordPress của bạn. Hãy thực hiện cẩn thận và kiểm tra kỹ lưỡng sau mỗi bước nhé!

Rate this post
Chia sẻ tới bạn bè và gia đình
kiendinh
kiendinh

Đinh Hùng Kiên, từng "thử sức" với C++, C#, nhưng lại rẽ hướng sang Marketing. Với tư duy logic sắc bén từ nền tảng lập trình và sự hỗ trợ mạnh mẽ của AI (ChatGPT, Gemini), Kiên chuyên về gỡ lỗi, triển khai các tính năng website. Kiên lập codecungai.com để giúp những người không chuyên biến ý tưởng thành hiện thực trên WordPress một cách dễ dàng.

Bài viết: 12
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
0
Rất thích suy nghĩ của bạn, hãy bình luận.x