Chuyển đến nội dung chính

Hướng dẫn cách bật CSP trong ASP.NET MVC

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-srcDefines 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-srcDefines valid sources for scritpts
style-srcDefines valid sources for CSS
frame-ancestorsDefines 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.orgspecific domain
*.example.organy subdomain
https://domain.example.orgspecific 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

Bài đăng phổ biến từ blog này

[ASP.NET MVC] Authentication và Authorize

Một trong những vấn đề bảo mật cơ bản nhất là đảm bảo những người dùng hợp lệ truy cập vào hệ thống. ASP.NET đưa ra 2 khái niệm: Authentication và Authorize Authentication xác nhận bạn là ai. Ví dụ: Bạn có thể đăng nhập vào hệ thống bằng username và password hoặc bằng ssh. Authorization xác nhận những gì bạn có thể làm. Ví dụ: Bạn được phép truy cập vào website, đăng thông tin lên diễn đàn nhưng bạn không được phép truy cập vào trang mod và admin.

ASP.NET MVC: Cơ bản về Validation

Validation (chứng thực) là một tính năng quan trọng trong ASP.NET MVC và được phát triển trong một thời gian dài. Validation vắng mặt trong phiên bản đầu tiên của asp.net mvc và thật khó để tích hợp 1 framework validation của một bên thứ 3 vì không có khả năng mở rộng. ASP.NET MVC2 đã hỗ trợ framework validation do Microsoft phát triển, tên là Data Annotations. Và trong phiên bản 3, framework validation đã hỗ trợ tốt hơn việc xác thực phía máy khách, và đây là một xu hướng của việc phát triển ứng dụng web ngày nay.

Tổng hợp một số kiến thức lập trình về Amibroker

Giới thiệu về Amibroker Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”. AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.