Tạo HTTP security headers để bảo vệ website khỏi XSS, clickjacking, code injection và các tấn công phổ biến. Hỗ trợ CSP, HSTS, X-Frame-Options và 10+ headers khác.
1. Chọn template nhanh (Strict/Moderate/Basic) hoặc tùy chỉnh thủ công
2. Cấu hình CSP directives (script-src, style-src, img-src...)
3. Bật HSTS với max-age phù hợp (1 năm recommended)
4. Chọn các security headers khác (X-Frame-Options, Referrer-Policy...)
5. Chọn format output (Apache, Nginx, PHP, HTML)
6. Copy code và áp dụng vào server/website
7. Test bằng securityheaders.com
• CSP là gì? Content Security Policy - whitelist nguồn nội dung được phép load (JS, CSS, images...).
• HSTS là gì? Bắt buộc browser chỉ kết nối qua HTTPS, ngăn SSL stripping.
• 'self' nghĩa là gì? Chỉ cho phép từ domain hiện tại (không bao gồm subdomain trừ khi có includeSubDomains).
• 'unsafe-inline' có nguy hiểm không? Có, cho phép inline JS/CSS. Nên dùng nonce hoặc hash thay thế.
• Test ở đâu? securityheaders.com hoặc Chrome DevTools > Network > Headers.
• Có ảnh hưởng SEO? Có (gián tiếp) - HTTPS (HSTS) là ranking signal, bảo mật tốt = trust.
🛡️ CSP: Ngăn XSS bằng cách whitelist nguồn JS/CSS/images. Directive mạnh nhất.
🔐 HSTS: Bắt buộc HTTPS, ngăn downgrade attacks. max-age = thời gian cache.
🖼️ X-Frame-Options: Ngăn clickjacking (nhúng site vào iframe độc hại).
📄 X-Content-Type-Options: Ngăn MIME-sniffing (browser đoán sai content type).
🔗 Referrer-Policy: Kiểm soát referrer header khi navigate.
🎥 Permissions-Policy: Kiểm soát browser features (camera, mic, geolocation...).
⚠️ X-XSS-Protection: Legacy header, thay thế bằng CSP.
default-src 'self' - Fallback cho tất cả directives khác
script-src 'self' https://cdn.com - JavaScript sources
style-src 'self' 'unsafe-inline' - CSS sources
img-src 'self' data: https: - Image sources (data: = base64)
font-src 'self' https://fonts.gstatic.com - Web fonts
connect-src 'self' - AJAX, WebSocket, EventSource
frame-ancestors 'none' - Thay thế X-Frame-Options
upgrade-insecure-requests - Tự động HTTPS
block-all-mixed-content - Chặn HTTP trên HTTPS
'self' - Cùng origin (protocol + domain + port)
'unsafe-inline' - Cho phép inline <script>, <style> (không an toàn)
'unsafe-eval' - Cho phép eval(), setTimeout(string) (nguy hiểm)
'none' - Không cho phép bất kỳ nguồn nào
data: - Cho phép data: URIs (base64 images)
https: - Cho phép tất cả HTTPS URLs
*.example.com - Wildcard subdomain
❌ Dùng 'unsafe-inline' cho script-src (mở cửa cho XSS)
❌ HSTS với max-age quá ngắn (<6 tháng)
❌ Bật HSTS preload trước khi test kỹ (không rollback được)
❌ CSP quá lỏng (https: cho script-src)
❌ Quên subdomains khi dùng HSTS
❌ Deploy CSP mà không test (có thể break website)
🌐 SecurityHeaders.com - Scan và grade A+ đến F
🔍 Google CSP Evaluator - Analyze CSP policy
🛠️ Chrome DevTools > Console - Xem CSP violations
📊 Mozilla Observatory - Security scan
✅ HSTS Preload List - Submit site cho preload
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; font-src 'self'; connect-src 'self'; frame-ancestors 'none'; upgrade-insecure-requests; block-all-mixed-content
Ví dụ HSTS:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload