Giới thiệu
Chính sách bảo mật nội dung (CSP) là một cơ chế bảo mật của trình duyệt giúp giảm nguy cơ Cross-Site Scripting (XSS) và tiêm nội dung. Gói Sonata-Extra cho Symfony cung cấp một cách hiệu quả để triển khai và quản lý CSP trong ứng dụng của bạn.
Hiểu về Chính sách Bảo mật Nội dung
CSP được truyền qua một tiêu đề phản hồi và cho phép kiểm soát các tài nguyên mà trang web của bạn có thể tải hoặc thực thi. Bằng cách chỉ định một danh sách các nguồn đáng tin cậy, bạn có thể giảm nguy cơ chèn nội dung độc hại.
Khái niệm chính
- Chỉ thị: Đây là các quy tắc xác định những tài nguyên nào có thể được tải. Mỗi chỉ thị kiểm soát một loại tài nguyên cụ thể, chẳng hạn như kịch bản, kiểu, hình ảnh, v.v.
- Nguồn: Dưới mỗi chỉ dẫn, bạn chỉ định các nguồn (như URL) từ đó tài nguyên có thể được tải về.
Các loại bảo mật trong gói Sonata-Extra
Trong Gói Sonata Extra, SECURITY_TYPES là một bảng hằng số liên kết các chỉ thị CSP với các khóa cấu hình của chúng. Dưới đây là sự phân chia của từng chỉ thị:
default-src
Giá trị mặc định cho hầu hết các chỉ thị. Kiểm soát các nguồn mặc định cho các loại nội dung khác nhau.
script-src
Xác định các nguồn hợp lệ cho JavaScript. Các tùy chọn bao gồm:
'self': Chỉ tải các tập lệnh từ cùng một nguồn.'unsafe-inline': Cho phép các script trực tuyến, mặc dù điều này kém an toàn hơn.- URL cụ thể: Xác định các script bên ngoài được phép.
style-src
Chỉ định các nguồn hợp lệ cho các bảng định kiểu. Các tùy chọn tương tự với script-src.
img-src
Kiểm soát các nguồn mà từ đó hình ảnh có thể được tải.
connect-src
Giới hạn các nguồn mà bạn có thể kết nối (ví dụ: WebSockets, yêu cầu AJAX).
font-src
Xác định các nguồn của các tệp phông chữ.
object-src
Kiểm tra các nguồn cho các yếu tố như <object>, <embed>, v.v.
media-src
Chỉ định các nguồn để tải phương tiện (âm thanh và video).
frame-src
Xác định các nguồn hợp lệ cho các khung (frames) và iframe.
Các chỉ thị khác
child-src,form-action,frame-ancestors,manifest-src,base-uri,sandbox,report-uri,worker-src,navigate-to: Chúng tinh chỉnh các chính sách hơn nữa cho các trường hợp sử dụng cụ thể.
Triển khai CSP trong gói Sonata-Extra
Cấu hình
Định nghĩa các chính sách CSP của bạn trong một tệp cấu hình YAML dưới partitech_sonata_extra. Ví dụ:
partitech_sonata_extra:
content_security_policy:
object-src:
- 'none'
script-src:
- 'self'
- 'unsafe-inline'
- 'https://external.script.url'
style-src:
- 'self'
- 'unsafe-inline'
- 'https://external.stylesheet.url'
font-src:
- 'self'
- 'https://cdnjs.cloudflare.com/'
- 'https://fonts.gstatic.com/'
Xác nhận chính sách trước khi triển khai


Bắt đầu bằng cách quan sát các vi phạm ở chế độ báo cáo, sau đó thu hẹp các nguồn được phép. Một CSP không thay thế việc thoát đầu ra hay xác thực đầu vào.