Trong quá trình mình làm website bán Plugins tại: plugins.com.vn
Mình phát hiện ra một số website cùng lĩnh vực của mình dính một vấn đề bảo mật hết sức nghiêm trọng, đó chính là chỉ cần người ngoài biết được link file .zip của sản phẩm nào là họ hoàn toàn có thể tải được về sử dụng mà không cần mua hay tham gia thành viên. Sau khi phát hiện ra điều đó, mình thử kiểm tra website bán Plugins và Themes của mình thì cũng bị tương tự, do đó mình đã tiến hành Chặn người ngoài truy cập vào thư mục /wp-content/uploads/.
Nếu không tiến hành chặn khách truy cập vào file .zip trong thư mục /wp-content/uploads/ thì khách hoàn toàn có thể tải được sản phẩm về mà không cần mua, ví dụ bạn tử click vào 3 link sau là sẽ tải được sản phẩm về (dù bên này đã sử dụng subdomain để đặt nơi chứa tệp .zip, còn một vài bên của Việt Nam mình cũng dò ra được các file nằm trong /wp-content/uploads/ và tải về được, nhưng mình không tiện đăng lên vì như vậy ảnh hưởng việc kinh doanh của họ, chỉ là với mình thì thích lấy sản phẩm nào mình lấy được hết, kkk:
- https://file.plugintheme.net/flatsome-main.3.17.7.zip
- https://file.plugintheme.net/flatsome-main.3.18.3.zip
- https://file.plugintheme.net/wordpress-seo-premium.22.4.zip
Tuy rằng không phải ai cũng biết để dò ra link của file chứa sản phẩm để down về nhưng với những người có chuyên môn thì việc dò ra không hề khó.
1. Chặn truy cập vào file .zip trong thư mục /wp-content/uploads/
Để chỉ chặn truy cập vào các tệp .zip trong thư mục /wp-content/uploads/ mà vẫn cho phép truy cập vào các tệp hình ảnh và các file khác, bạn có thể sử dụng một quy tắc RewriteCond để kiểm tra loại tệp trước khi áp dụng quy tắc RewriteRule. Dưới đây là cách bạn có thể thực hiện điều này trong file .htaccess:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^/wp-content/uploads/.*\.zip$ RewriteRule ^(.*)$ - [F,L] <IfModule>
Giải thích:
- RewriteCond %{REQUEST_URI} ^/wp-content/uploads/.*.zip$: Quy tắc này kiểm tra nếu URL của yêu cầu bắt đầu bằng /wp-content/uploads/ và kết thúc bằng phần mở rộng .zip.
- RewriteRule ^(.*)$ – [F,L]: Nếu điều kiện trên được đáp ứng (tức là yêu cầu truy cập vào một tệp .zip trong thư mục /wp-content/uploads/), thì quy tắc này sẽ từ chối yêu cầu (mã phản hồi 403 Forbidden) và kết thúc quá trình xử lý (flag [F,L]).
Đảm bảo bạn kiểm tra kỹ lại sau khi triển khai để đảm bảo rằng các tệp hình ảnh và các tệp khác trong thư mục /wp-content/uploads/ vẫn có thể truy cập được như mong đợi.
Nếu bạn chỉ cần chặn các file với dạng .PDF, .Zip thì hãy thực hiện thêm việc setup các đuôi file phù hợp.
2. Chặn khách truy cập vào tất cả các file thư mục /wp-content/uploads/
Để chặn người ngoài truy cập vào tất cả các file thư mục /wp-content/uploads/, bạn có thể sử dụng các cách tiếp cận sau:
- Sử dụng plugin bảo mật WordPress: Có nhiều plugin bảo mật WordPress cung cấp tính năng chặn truy cập vào các thư mục cụ thể. Ví dụ, bạn có thể sử dụng plugin như Wordfence hoặc iThemes Security để thiết lập các quy tắc bảo mật cho các thư mục như /wp-content/uploads/.
- Sử dụng file .htaccess: Bạn có thể thêm một tệp .htaccess vào thư mục /wp-content/uploads/ để chặn truy cập từ bên ngoài. Để làm điều này, bạn có thể thêm mã sau vào tệp .htaccess:
# Block access to uploads directory <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-content/uploads/(.*)$ - [F,L] <IfModule>
Ghi chú:
- Đoạn mã này sẽ từ chối tất cả các yêu cầu truy cập vào thư mục /wp-content/uploads/ từ các trình duyệt, bao gồm cả file hình ảnh và các file khác.
- Thiết lập quyền truy cập trong cấu hình máy chủ: Nếu bạn có quyền truy cập vào cấu hình máy chủ, bạn cũng có thể cấu hình máy chủ để từ chối truy cập vào thư mục /wp-content/uploads/.
- Sử dụng các plugin quản lý quyền truy cập: Ngoài WooCommerce và Plugin Membership, bạn có thể sử dụng các plugin quản lý quyền truy cập khác như “Members” hoặc “User Role Editor” để kiểm soát quyền truy cập vào thư mục /wp-content/uploads/ dựa trên vai trò của người dùng.
Hãy chọn cách phù hợp nhất với bạn và đảm bảo kiểm tra lại sau khi triển khai để đảm bảo rằng truy cập vào thư mục /wp-content/uploads/ đã được chặn thành công.
Lưu ý: Cách chặn trên sẽ chặn luôn cả việc truy cập vào tất cả các file, bao gồm cả hình ảnh ở dạng: /wp-content/uploads/2024/04/htacess.jpg. Vì vậy không nên sử dụng nếu bạn không muốn tất cả ảnh trên web đều không hiển thị (vì nằm chung trong nội dung chia sẻ nên mình đưa thêm vào thôi)
Ghi chú: Mình thành lập website cá nhân này nhằm thỏa mãn đam mê viết lách, bao gồm những bài blog mình tự viết và cả những nội dung sưu tầm. Nếu bạn yêu thích hãy cùng kết nối với mình qua Zalo: 0949.339.222 hoặc Facebook: Trịnh Bảo. Cảm ơn bạn đã ghé thăm!