CSP LÀ GÌ ? HƯỚNG DẪN BẢO MẬT WEBSITE VỚI CSP
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.
Trình duyệt sẽ không tự biết được có nên tải những file này hay không, nó chỉ thực thi theo yêu cầu, cho dù nguồn gốc của file Javascript đến từ trang hehetuilahacker.com
Đây chính là lý do chúng ta cần đến CSP.
Tạo danh sách nguồn nội dung an toàn
Tạo một danh sách CSP cho phép bạn chỉ định các nguồn nội dung an toàn mà trình duyệt có thể tải. Bằng cách này bạn có thể bảo vệ người truy cập và chính bạn khỏi các mã độc hại do Hacker cài cắm vào trang web.
Như thế nào là một nguồn 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.
Những file nguồn không nằm trong danh sách, trình duyệt sẽ không tải và không thực thi.
CSP có thể bảo vệ được những gì ?
Dưới đây là danh sách toàn bộ những thuộc tính có thể sử dụng trong CSP. Nguồn : OWASP
default-src: Define loading policy for all resources type in case of a resource type dedicated directive is not defined (fallback), script-src: Define which scripts the protected resource can execute, object-src: Define from where the protected resource can load plugins, style-src: Define which styles (CSS) the user applies to the protected resource, img-src: Define from where the protected resource can load images, media-src: Define from where the protected resource can load video and audio, frame-src: Define from where the protected resource can embed frames, font-src: Define from where the protected resource can load fonts, connect-src: Define which URIs the protected resource can load using script interfaces, form-action: Define which URIs can be used as the action of HTML form elements, sandbox: Specifies an HTML sandbox policy that the user agent applies to the protected resource, script-nonce: Define script execution by requiring the presence of the specified nonce on script elements, plugin-types: Define the set of plugins that can be invoked by the protected resource by limiting the types of resources that can be embedded, reflected-xss: Instructs a user agent to activate or deactivate any heuristics used to filter or block reflected cross-site scripting attacks, equivalent to the effects of the non-standard X-XSS-Protection header, report-uri: Specifies a URI to which the user agent sends reports about policy violation
Các khóa bổ trợ :
none
không cho phép thực thiself
cho phép thực thi đối với domain của bạn hoặc những domain được chỉ địnhunsafe-inline
cho phép thực thi các đoạn mã CSS hoặc Javascript được nhúng trực tiếp vào mã nguồn. Thiết lập này không được khuyến khích sử dụng nhưng trong nhiều trường hợp chúng ta vẫn phải dùng đến.unsafe-eval
cho phép chạy hàm eval(), đây là một hàm khá nguy hiểm của JavascriptCác trình duyệt hỗ trợ CSP :
- Chrome 40+
- Firefox 31+
- Safari 7+
- Internet Explorer/Edge 10+
Nhận xét
Đăng nhận xét