Các sử dụng một số usecase của CSP (Content Security Policy)

GIỚI THIỆU

CSP (Content Security Policy) là một công nghệ bảo mật cho phép bạn kiểm soát các nguồn tài nguyên mà trình duyệt được phép tải xuống trong trang web của bạn. Đây là một cách hiệu quả để ngăn chặn các cuộc tấn công XSS (Cross-Site Scripting) và các cuộc tấn công khác liên quan đến việc chèn mã độc vào trang web của bạn.

Để enable CSP, chúng ta chỉ cần cấu hình cho server của chúng ta trả về Content-Security-Policy HTTP headers.

Một cách khác chúng ta có thể sử dụng thông qua thẻ <meta>. Ví dụ: <meta http-equiv=”Content-Security-Policy” content=”default-src ‘self’; img-src https://*; child-src ‘none’;”>

Vì thế CSP sinh ra để hạn chế những vấn đề đó bằng cách:

  • Kiểm soát nơi request được tạo
  • Quy định các domain được phép truy cập trong một scope nhất định
  • Quy định nơi tài nguyên được load

Mặc dù vậy, CSP vẫn không thể ngăn chặn toàn bộ các cuộc XSS mà nó chỉ có thể giảm thiểu và hạn chế tối đa mức độ ảnh hưởng do XSS gây ra.

Các trình duyệt hỗ trợ CSP bao gồm Chrome, Firefox, Edge…, bao gồm cả các trình duyệt mobile, nói chung khoảng 90% trình duyệt hiện tại đều được hỗ trợ bởi tính năng này.

Các tính năng

Tên directive:

  • script-src: chỉ định nguồn (nơi) load các tài nguyên javascript
  • style-src: chỉ định nguồn (nơi) load các tài nguyên css
  • image-src: chỉ định nguồn (nơi) load các tài nguyên image
  • font-src: chỉ định nguồn (nơi) load các tài nguyên font
  • frame-src: chỉ định nguồn (nơi) load các tài nguyên frame

Các giá trị của CSP directive:

  • * : Là wildcard, hay còn có nghĩa là all
  • self: chỉ định domain đang truy cập
  • none: không cho phép bất kỳ nguồn nào
  • http://www.domain.com: cho phép tải resource từ domain được chỉ định, cái này khác hoàn toàn với domain.com
  • domain.com: cho phép tải resource từ domain chỉ định, không cho phép từ http://www.domain.com, subdomain.domain.com, cdn.domain.com, …
  • *.domain.com: cho phép load resource từ subdomain của domain domain.com
  • https: cho phép load từ những trang https

Một số ví dụ

  • EX1:

Content-Security-Policy: default-src 'self'
Chỉ cho phép tải resource từ domain hiện tại hoặc domain đang truy cập

  • EX2:

Content-Security-Policy: default-src 'self' *.trusted.com
Cho phép tải resource từ domain hiện tại và từ các subdomain khác của domain trusted.com

  • EX3:

Content-Security-Policy: default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com

  • default-src ‘self’: Cho phép load resource từ domain hiện tại
  • img-src *: có thể lấy image từ bất kỳ nguồn nào
  • media-src media1.com media2.com: chỉ cho phép load media từ media1.com và media2.com
  • script-src userscripts.example.com: chỉ cho phép load script từ userscripts.example.com

Published by Nhat Truong

Hi

Leave a comment