Tạo Content Security Policy
Dựng CSP theo từng directive, cảnh báo ngay hai sai lầm khiến cả chính sách trở nên vô dụng.
Chạy hoàn toàn trong trình duyệt của bạn
Đang tải công cụ...
Cách sử dụng
- Bắt đầu từ mức mặc định, vốn là một chính sách chặt phù hợp với phần lớn trang tĩnh.
- Thêm các nguồn mà trang của bạn thực sự tải, lần lượt theo từng directive.
- Triển khai ở chế độ chỉ báo cáo trước, xem cái gì vỡ, rồi mới bật chặn thật.
- Sao chép phần header phản hồi — thẻ meta chỉ là phương án dự phòng.
Tính năng
- Đủ các directive quan trọng, kèm danh sách từ khóa thông dụng.
- Cảnh báo 'unsafe-inline', 'unsafe-eval', ký tự đại diện và thiếu default-src.
- Nêu rõ directive nào thẻ meta không mang được, thay vì xuất ra thẻ chỉ hiệu lực một nửa.
- Đọc lại được chính sách có sẵn để chỉnh sửa.
- Chạy hoàn toàn trong trình duyệt.
Câu hỏi thường gặp
- Vì sao 'unsafe-inline' lại nghiêm trọng đến vậy?
- Vì script bị chèn vào chính là script nội tuyến. Chính sách cho phép script nội tuyến tức là cho phép đúng cuộc tấn công mà nó được viết ra để chặn — header thì có, sự bảo vệ thì không. Hãy dùng nonce (một giá trị ngẫu nhiên gắn vào thẻ script của bạn, sinh mới theo từng phản hồi) hoặc hash nội dung của từng script.
- Nên dùng header hay thẻ meta?
- Dùng header ở bất cứ đâu bạn đặt được. Thẻ meta không diễn đạt được `frame-ancestors` lẫn chế độ chỉ báo cáo, và nó chỉ áp dụng cho phần nội dung sau thẻ — những gì trình phân tích đã đọc trước đó vốn đã không được bảo vệ. Dạng thẻ meta dành cho khi bạn thực sự không đụng được vào máy chủ.
- Triển khai thế nào để không làm vỡ trang?
- Bật chế độ chỉ báo cáo trước. Trình duyệt sẽ báo những gì chính sách lẽ ra đã chặn mà không chặn thật, nhờ vậy bạn tìm ra các tài nguyên bị bỏ sót trước khi người dùng gặp phải. Chuyển sang chặn thật khi báo cáo đã im ắng — và nhớ rằng chế độ chỉ báo cáo tự nó không bảo vệ gì, nên nó được cảnh báo ở đây.
Công cụ liên quan
Dán header phản hồi để thấy còn thiếu lớp bảo vệ nào — những thứ không bao giờ hiện ra dưới dạng lỗi.
Đọc header Set-Cookie theo từng thuộc tính, và thấy ngay thiếu lớp bảo vệ nào.
Tạo thẻ meta SEO, Open Graph và Twitter.