- Security Headers là gì?
- Danh sách Security Headers quan trọng nhất
- 1. X-Frame-Options (chống Clickjacking)
- Apache
- Nginx
- 2. X-Content-Type-Options (chống MIME sniffing)
- 3. Strict-Transport-Security (HSTS – ép HTTPS)
- 4. Referrer-Policy (giới hạn gửi referrer)
- 5. Permissions-Policy (chặn quyền nguy hiểm của trình duyệt)
- 6. Cross-Origin-Opener-Policy (COOP)
- 7. Cross-Origin-Embedder-Policy (COEP)
- 8. Cross-Origin-Resource-Policy (CORP)
- 9. Content-Security-Policy (CSP – mạnh nhất)
- Tích hợp Security Headers vào WordPress
- 1. Thêm vào .htaccess (Apache)
- 2. Thêm vào cấu hình Nginx
- 3. Thêm qua theme (cách này yếu hơn)
- Các lỗi cấu hình security headers thường gặp
- Bộ Security Headers “chuẩn” cho WordPress
- Checklist Security Headers
- Kết luận
Chỉ cần cấu hình đúng một vài header, bạn có thể chặn hàng tá cuộc tấn công trước khi chúng tiếp cận code của bạn.
Security Headers là gì?
Security Headers là các HTTP header được server gửi cùng với mỗi response. Chúng hướng dẫn trình duyệt cách xử lý nội dung của trang, ngăn chặn nhiều hành vi nguy hiểm như:
- Chèn script độc hại (XSS)
- Nhúng website vào iframe (Clickjacking)
- Tải script từ nguồn không tin cậy
- Chặn downgrade attack HTTPS → HTTP
- Chặn MIME sniffing
Không cần sửa code plugin/theme – chỉ cần cấu hình server đúng cách.
Danh sách Security Headers quan trọng nhất
1. X-Frame-Options (chống Clickjacking)
X-Frame-Options: SAMEORIGIN
- SAMEORIGIN: chỉ cho phép iframe từ chính website
- DENY: cấm mọi iframe
WordPress admin rất dễ bị clickjacking → bật bắt buộc.
Apache:
Header always append X-Frame-Options SAMEORIGIN
Nginx:
add_header X-Frame-Options "SAMEORIGIN";
2. X-Content-Type-Options (chống MIME sniffing)
X-Content-Type-Options: nosniff
Ngăn trình duyệt cố đoán MIME → chặn nhiều tấn công upload file.
3. Strict-Transport-Security (HSTS – ép HTTPS)
Buộc trình duyệt luôn dùng HTTPS → chặn MITM (man-in-the-middle).
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Lưu ý: Chỉ bật khi site 100% dùng HTTPS.
4. Referrer-Policy (giới hạn gửi referrer)
Referrer-Policy: strict-origin-when-cross-origin
Bảo vệ URL nhạy cảm không bị leak sang domain khác.
5. Permissions-Policy (chặn quyền nguy hiểm của trình duyệt)
Trước đây là Feature-Policy.
Permissions-Policy: geolocation=(), camera=(), microphone=()
Hạn chế website giả mạo lạm dụng camera/microphone.
6. Cross-Origin-Opener-Policy (COOP)
Cross-Origin-Opener-Policy: same-origin
Giảm nguy cơ tấn công cross-window, tab-napping.
7. Cross-Origin-Embedder-Policy (COEP)
Cross-Origin-Embedder-Policy: require-corp
Ngăn nhúng tài nguyên cross-site không rõ nguồn gốc.
8. Cross-Origin-Resource-Policy (CORP)
Cross-Origin-Resource-Policy: same-origin
Ngăn domain khác tải tài nguyên tĩnh của bạn.
9. Content-Security-Policy (CSP – mạnh nhất)
CSP là “quái vật” trong security headers – chặn 90% XSS và clickjacking.
Ví dụ CSP đơn giản:
Content-Security-Policy: default-src 'self'; img-src 'self' https:; script-src 'self'; style-src 'self' 'unsafe-inline'
Mạnh hơn:
Content-Security-Policy: frame-ancestors 'self';
→ Thay thế X-Frame-Options.
Tích hợp Security Headers vào WordPress
1. Thêm vào .htaccess (Apache)
<IfModule mod_headers.c>
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "geolocation=(), camera=(), microphone=()"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>
2. Thêm vào cấu hình Nginx
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header Permissions-Policy "geolocation=(), camera=(), microphone=()";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
3. Thêm qua theme (cách này yếu hơn)
Dùng hook send_headers:
function add_security_headers() {
header( 'X-Frame-Options: SAMEORIGIN' );
header( 'X-Content-Type-Options: nosniff' );
header( 'Referrer-Policy: strict-origin-when-cross-origin' );
}
add_action( 'send_headers', 'add_security_headers' );
→ Không mạnh bằng cấu hình server, nhưng tốt khi không sửa server được.
Các lỗi cấu hình security headers thường gặp
- Dùng CSP quá mạnh làm hỏng CSS/JS
- Thiếu HTTPS nhưng bật HSTS
- Chỉ bật một vài header, không bật đủ
- Không test trên nhiều browser
- Dùng allowlist domain quá rộng trong CSP
Bộ Security Headers “chuẩn” cho WordPress
Đây là combo mạnh – tối ưu – an toàn nhất:
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: geolocation=(), camera=(), microphone=()
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Content-Security-Policy: frame-ancestors 'self'
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
Checklist Security Headers
- Bật X-Frame-Options hoặc CSP frame-ancestors
- Bật X-Content-Type-Options để chống MIME sniffing
- Bật HSTS nếu site dùng HTTPS
- Bật Permissions-Policy để chặn quyền nguy hiểm
- Giới hạn referrer bằng Referrer-Policy
- Cấu hình CSP nếu muốn chống XSS mạnh
- Test kỹ khi bật CSP để tránh lỗi giao diện
Kết luận
Security Headers là một lớp bảo mật cực kỳ hiệu quả và dễ triển khai cho WordPress. Chỉ cần bật 5–7 header quan trọng, bạn có thể chặn phần lớn các tấn công phổ biến như XSS, clickjacking, phishing, data leak, và downgrade attack. Đây là bước hardening bắt buộc đối với bất kỳ website WordPress nào muốn tăng cường bảo mật chuyên nghiệp.
Bình luận