Professional Documents
Culture Documents
Link tham khảo thêm về thuộc tính và giá trị của CSP directive:
- Content Security Policy Level 2: https://www.w3.org/TR/CSP2/#examples
- Content Security Policy Level 3: https://www.w3.org/TR/CSP3/#authoring-
considerations
6. Ví dụ về Content-Security-Policy
Dưới đây là một số rule phổ biến được áp dụng trong Content-Security-Policy:
- Cho phép tải tất cả cái loại tài nguyên từ cùng một origin (cùng scheme, host,
port).
default-src ‘self’;
+ default-src: Chỉ định các chính sách mặc định cho việc lấy tất cả các loại tài
nguyên như JavaScript, Image, CSS, Font, AJAX request, Frame, HTML5 Media,
…
+ self: Cho phép tải tài nguyên từ cùng một origin.
- Chỉ cho phép tải các đoạn mã script từ cùng một origin.
script-src ‘self’;
+ script-src: Chỉ định những nguồn được tải cho các tài nguyên JavaScript.
+ self: Cho phép tải tài nguyên từ cùng một origin.
- Cho phép tải các đoạn mã script từ cùng một origin, Google Analytics, Google
AJAX CDN.
script-src ‘self’ www.google-analytics.com ajax.googleapis.com;
+ script-src: Chỉ định những nguồn được tải cho các tài nguyên JavaScript.
+ self: Cho phép tải tài nguyên từ cùng một origin.
+ www.google-analytics.com ajax.googleapis.com: Cho phép tải tài nguyên từ tên
miền được chỉ định là www.google-analytics.com và ajax.googleapis.com
- Chính sách dành cho người mới bắt đầu cấu hình CSP: cho phép tải tất cả các
image, script, AJAX, form action và CSS từ cùng một origin nhưng không cho
phép tải bất kỳ tài nguyên nào khác (ví dụ như: object, frame, media,…)
default-src 'none'; script-src 'self'; connect-src 'self'; img-src 'self'; style-src
'self';base-uri 'self';form-action 'self'
+ default-src 'none'; : Đầu tiên, chỉ định không cho phép tải tất cả các loại tài
nguyên từ bất kỳ nguồn nào.
+ script-src 'self'; connect-src 'self'; img-src 'self'; style-src 'self';base-uri
'self';form-action 'self': Sau đó, thêm chỉ định cho phép tải script, AJAX, web
socket, image, CSS, form action từ cùng một origin. Cẩn thận hơn, chỉ định base
URL phải là cùng origin cho tất cả các URL tương đối trong trang (base-uri:
‘self’).
7. Thông báo lỗi vi phạm chính sách trong Content-Security-Policy
- Trong Chrome khi xảy ra vi phạm chính sách trên CSP về việc tải tài nguyên là
các đoạn mã script, người dùng sẽ nhận được thông báo như sau trong Chrome
Developer Tools:
Refused to load the script 'script-uri' because it violates the following Content
Security Policy directive: "CSP directive".
+ Ví dụ:
- Tuy nhiên trên Firefox, người dùng sẽ nhận được thông báo như sau trong Web
Developer Tools:
- Ngoài việc thông báo lỗi vi phạm trên console, một sự kiện
securitypolicyviolation được kích hoạt trên cửa sổ.
+ Link tham khảo thêm về việc kích hoạt sự kiện vi phạm trong CSP:
https://www.w3.org/TR/CSP2/#firing-securitypolicyviolationevent-events
8. Cấu hình CSP trên máy chủ
Bất kỳ môi trường lập trình phía máy chủ nào cũng phải cho phép gửi một HTTP
response header được tùy chỉnh. CSP được thêm vào phần HTTP Responese
header. Chúng ta có thể cấu hình web server để gửi HTTP response header có
chứa CSP.
- Apache Content-Security-Policy Header
Thêm vào file httpd.conf trong VirtualHost hoặc file .htaccess. Ví dụ:
Header set Content-Security-Policy “default-src ‘self’;”
- Nginx Content-Security-Policy Header
Thêm vào trong block của server{}. Ví dụ:
add_header Content-Security-Policy “default-src ‘self’;”;
Chúng ta có thêm always vào cuối dòng lệnh để đảm bảo rằng nginx gửi
header mà không cần mã phản hồi.
- IIS Content-Security-Policy Header
Có hai cách cấu hình như sau:
+ Sử dụng HTTP Response Headers GUI trong IIS Manager.
+ Ngoài ra, có thể thêm vào trong file web.config. Ví dụ:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Content-Security-Policy" value="default-src
'self';" />
</customHeaders>
</httpProtocol>
</system.webServer>