CSP là gì?
Content Security Policy (CSP) là chính sách bảo mật nội dung, được sử dụng để xác định các nguồn nội dung an toàn trên website mà trình duyệt có thể tải về cho người dùng. CSP là biện pháp đối phó rất hiệu quả với kiểu hack chèn mã độc Cross Site Scripting (XSS).
Tại sao chúng ta cần sử dụng CSP ?
Khi bạn truy cập vào một trang web, trình duyệt sẽ gửi yêu cầu tải nội dung đến máy chủ. Máy chủ sẽ gửi trả lại nội dung của trang web này cho trình duyệt, trong đó bao gồm các file css, javascript, font, Frame … Trình duyệt sẽ tải toàn bộ những file này, vì nó được chỉ định phải làm như vậy từ mã nguồn của trang web để có thể hiển thị nội dung.
Và Hacker có thể lợi dụng điều này để đặt một đoạn mã ở trong mã nguồn ( những người sử dụng mã nguồn không rõ nguồn gốc hoặc hàng nulled rất hay bị dính ) hoặc trong một phần bình luận trên trang web để tải một số file Javascript độc hại từ một nguồn bên ngoài.
Nội dung an toàn
Đó là nguồn mà bạn biết rõ nó từ đâu đến. Ví dụ như những file Javascript được tải từ các dịch vụ của Google, Google Analystics, Google reCapcha, Google Map, Google Fonts, Fackebook, Twitter, Pinterest, Cloudflare … Hoặc những file nằm trong mã nguồn website của bạn.
Cách kiểm tra CSP của một trang web
Bạn mở 1 trang web bất kỳ, bấm F12 -> Network. Bấm vào tên trang web rồi xem Response Header.
Ví dụ trong trường hợp này bạn sẽ thấy:
Content-Security-Policy: script-src 'unsafe-eval' 'self' https://*.tuoitre.vn
Setup CSP trong ASP.NET MVC
Mở file Web.config, thêm thẻ customHeaders trong httpProtocol
Ví dụ:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="Content-Security-Policy" value="script-src 'unsafe-eval' 'self' https://*.tuoitre.vn" />
</customHeaders>
</httpProtocol>
</system.webServer>
Đây là kết quả khi bạn tải trang web:
Dưới đây là những object được phép định nghĩa trong Content-Security-Policy
default-src | Defines the default sources for directives which haven’t been given a more specific source list. So if you just specify this one it’ll set up the others for you, but you can specify default and then additional ones such as script-src and default-src will be used for all resource types other than scripts, which will use the more specific list given. |
script-src | Defines valid sources for scritpts |
style-src | Defines valid sources for CSS |
frame-ancestors | Defines which pages may embed this page as a <frame> or <iframe> |
Dưới đây là những giá trị mà bạn có thể thêm vào:
‘none’ | Disallow all resource locations |
‘self’ | Same origin only |
* | Wildcard, allows any URL except data: blob: filesystem: |
domain.example.org | specific domain |
*.example.org | any subdomain |
https://domain.example.org | specific domain and protocol |
‘unsafe-inline’ | allow embedding of elements including script tags and handlers such as onfocus=, onerror= |
‘unsafe-eval’ | allows evaluated JavaScript, such as eval() |
data: | allow loading resources via the data: scheme |
Tham khảo
Content Security Policy - An Introduction: https://scotthelme.co.uk/content-security-policy-an-introduction/
Introduction to Content Security Policy
CSP là gì ? Hướng dẫn bảo mật website với CSP
Nhận xét
Đăng nhận xét