Bảo mật website WordPress với HTTP Security Headers một cách đơn giản.

Bạn đã bao giờ nghe về các kỹ thuật tấn công bảo mật như Clickjacking hay XSS (Cross Site Scripting) chưa? Chúng là những phương thức tấn công bảo mật rất phổ biến và nguy hiểm cho website. Tuy nhiên, chúng lại có thể bị ngăn chặn hiệu quả bởi HTTP Security Headers. Vậy HTTP Security Headers là gì? Làm thế nào để bảo mật website WordPress của bạn với HTTP Security Headers? Hãy dành vài phút để cùng WP Căn bản tìm hiểu ngay sau đây.
Tham khảo thêm:
- Cấu hình HSTS cho blog/ website thông qua file .htaccess
- Bảo mật WordPress hiệu quả bằng file .htaccess
HTTP Security Headers là gì?
HTTP Security Headers hiểu đơn giản là các chỉ thị được thêm vào HTTP Response Header để giúp tăng cường khả năng bảo mật cho website. HTTP Security Headers bao gồm các chỉ thị cơ bản như:
- Referrer-Policy: cho phép một trang web kiểm soát lượng thông tin mà trình duyệt web bao gồm với các điều hướng ra ngoài trang web đó.
- Strict-Transport-Security: hay còn gọi là HSTS, bắt buộc người dùng phải truy cập website bằng giao thức bảo mật HTTPS.
- X-Frame-Options: cho trình duyệt web biết bạn có muốn cho phép trang web của mình được đóng khung hay không. Bằng cách ngăn chặn trình duyệt web đóng khung trang web, bạn có thể bảo vệ nó chống lại các cuộc tấn công như Clickjacking.
- X-Xss-Protection: đặt cấu hình cho các bộ lọc tập lệnh cross-site được tích hợp vào hầu hết các trình duyệt web. Nó được dùng để ngăn chặn các cuộc tấn công XSS.
- X-Content-Type-Options: ngăn chặn trình duyệt web cố gắng xác định loại nội dung (css, js, image…) và buộc nó phải tuân theo kiểu nội dung đã được khai báo.
- Content-Security-Policy: là biện pháp hiệu quả để bảo vệ trang web của bạn khỏi các cuộc tấn công XSS. Bằng các nguồn nội dung được phê duyệt trong danh sách trắng (whitelisting), bạn có thể ngăn trình duyệt tải nội dung độc hại.
- Feature-Policy: cho phép một trang web kiểm soát các tính năng và API có thể được sử dụng trong trình duyệt web.
Làm sao để kiểm tra HTTP Security Headers của website?
Rất đơn giản. Các bạn có thể xem HTTP Security Headers thông qua Chrome Developer Tools (bấm phím F12 => chọn tab Network => load lại website => click vào link website trong cột Name):

Hoặc sử dụng một website có tên là Security Headers. Tất cả những gì bạn cần làm là nhập địa chỉ vào khung rồi click nút Scan.

Chờ trong giây lát để hệ thống phân tích và trả về kết quả. Nó sẽ trông tương tự như thế này:

Những mục đã đạt sẽ được đánh dấu bằng màu xanh lá. Những mục chưa đạt sẽ được đánh dấu bằng màu đỏ.
Hướng dẫn bảo mật website WordPress với HTTP Security Headers
Trong khuôn khổ của bài viết này, tôi sẽ hướng dẫn cho các bạn cách để bảo mật website WordPress với 4 HTTP Security Headers phổ biến nhất. Riêng với HSTS (HTTP Strict Transport Security), các bạn có thể xem trong link tham khảo ở phần đầu của bài viết.
1. Referrer-Policy
Thêm đoạn code sau đây vào cuối file functions.php của theme hoặc child theme mà bạn đang sử dụng:
add_action('send_headers', function(){
header("Referrer-Policy: no-referrer-when-downgrade");
}, 1);
Xóa cache web (nếu bạn có sử dụng plugin tạo cache) và kiểm tra kết quả.
2. X-Content-Type-Options
Thêm đoạn code sau đây vào cuối file .htaccess trong thư mục gốc (nơi cài đặt WordPress):
<IfModule mod_headers.c>
Header set X-Content-Type-Options nosniff
</IfModule>
nosniff là tùy chọn duy nhất dành cho X-Content-Type-Options.
Lưu lại và kiểm tra kết quả.
3. X-Frame-Options
Thêm đoạn code sau đây vào cuối file .htaccess trong thư mục gốc (nơi cài đặt WordPress):
<IfModule mod_headers.c>
Header always append X-Frame-Options SAMEORIGIN
</IfModule>
Tùy chọn SAMEORIGIN dùng để xác định rằng trang web chỉ có thể được hiển thị ở trong một iframe tạo bởi ai đó ở cùng một nguồn (same origin) với nó.
Lưu lại và kiểm tra kết quả.
4. X-XSS-Protection
Thêm đoạn code sau đây vào cuối file .htaccess trong thư mục gốc (nơi cài đặt WordPress):
<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
</IfModule>
Tùy chọn 1; mode=block khi được kích hoạt sẽ vô hiệu hoàn toàn việc hiển thị trang web nếu nó bị tấn công theo phương thức Cross Site Scripting (XSS).
Lưu lại và kiểm tra kết quả.
Lưu ý: nếu bạn không nhìn thấy file .htaccess trong File Manager của cPanel, hãy tham khảo bài viết “Hiển thị file htaccess trong cPanel một cách đơn giản“.
Thật đơn giản phải không nào? Chúc các bạn thành công.
Mọi thắc mắc và góp ý liên quan đến việc bảo mật website WordPress với HTTP Security Headers xin vui lòng gửi vào khung bình luận bên dưới để được giải đáp.
Nếu bạn thích bài viết này, hãy subscribe blog của tôi để thường xuyên cập nhật những bài viết hay nhất, mới nhất qua email nhé. Cảm ơn rất nhiều. :)






đã done cho website, cảm ơn bro nhiêu
Đọc được bài này của bác hại em thức trắng đêm: ))
Thành quả: https://www.upsieutoc.com/images/2019/03/10/2019-03-10_040918.th.png
Hây dà, mình đã chèn hết các code vào mà không thấy hết mấy cái đánh dấu màu đỏ, cài luôn plugin Security Headers. Mình không dùng plugin cache, không biết trên host nó có cache tự động không nữa :(
Thanks Trung Hiếu, S_code của mình upgraded sẵn 2 trong số chúng, mình chỉ cần add thêm 3 cái yếu tốt còn lại, nếu ko có bài này thì không thể biết được, Bây giờ Website của mình chỉ toàn mày XANH (lá chuối) cực chuẩn luôn nha …
Mấy vụ này mình mù tịt, đành nhờ coder làm cho nó nhanh. Cũng phải theo xu hướng thôi, ko chuyển sang https nó lại hiện cảnh báo web ko an toàn, nhìn chết mệt.
Bác có gặp trường hợp này không , sau khi mình thực hiện các bảo mật như bài viết của bác , khi đăng các link redirect trên máy tính lên facebook ( kiểu “site.com/baiviet1” > redirect > link một bài viết ) thì bị lỗi và dẫn về trang chủ ( mặc định của web mình là 404 sẽ về trang chủ ) .
Vấn đề này xuất hiện sau khi Facebook bổ sung tracking cho các link khi để ?fbid= ở cuối link . Mình đã check trên facebook điện thoại thì truy cập bình thường , trong khi dùng máy tính là bị như trên
Có plugin hỗ trợ cho nhanh ko bác?
Mình vừa comment trả lời một bạn ở bên trên xong. :P
Nếu mình dùng vps và cài nginx thì sao bạn? vì không dùng được file .htaccess
Bạn thử cài plugin Security Headers xem sao nhé. Hoặc tham khảo thêm bài viết này.
Thanks Admin nhé! Mình để mình thử dùng plugin xem có được không đã nếu ko thì mình xem tài liệu tiếng anh.
Cấu hình Plugin Security Headers như thế nào vậy Hiếu?
HTTP Public Key Pinning, Expect Certificate Transparency và HTTP Referrer Policy khó quá thì bỏ qua. Nó cũng không quan trọng lắm. Mấy cái còn lại chỉ cần tick vào rồi Save Changes là được mà.
iTheme Security nó có bao gồm cái này không bác nhỉ
Nếu mình không nhầm thì không có bất cứ plugin bảo mật nào được trang bị những tính năng này.
Có cái plugin này nè bác: https://wordpress.org/plugins/http-headers/
Vậy là mình nhầm rồi. :D Cảm ơn bạn đã chia sẻ. :)
Thêm đoạn code sau đây vào cuối file .htaccess trong thư mục gốc (nơi cài đặt WordPress) là cái file .htaccess ngang hàng với public_html hay là ngang hàng với wp-content, wp-admin hả anh?
File ngang hàng với wp-content, wp-admin, wp-includes… nhé.