Các chủ đề về bảo mật trong ASP.NET Core
Nguồn: ASP.NET Core security topics | Phiên bản: .NET 8.0
Trong bài viết này
ASP.NET Core cho phép các nhà phát triển cấu hình và quản lý bảo mật. Danh sách dưới đây cung cấp các liên kết đến các bài viết về làm việc với bảo mật trong ASP.NET Core:
- Authentication (Xác thực)
- Authorization (Phân quyền)
- Data protection (Bảo vệ dữ liệu)
- HTTPS enforcement (Bắt buộc dùng HTTPS)
- Safe storage of app secrets in development (Lưu trữ bí mật ứng dụng an toàn trong môi trường phát triển)
- XSRF/CSRF (Giả mạo yêu cầu chéo trang) prevention (Phòng chống XSRF/CSRF)
- CORS (Chia sẻ tài nguyên chéo nguồn gốc) - Cross Origin Resource Sharing
- XSS (Kịch bản chéo trang) - Cross-Site Scripting attacks (Tấn công XSS)
Các tính năng bảo mật này cho phép bạn xây dựng các ứng dụng ASP.NET Core mạnh mẽ và bảo mật.
Đối với phạm vi bảo mật Blazor — bổ sung hoặc thay thế hướng dẫn trong phần này — hãy xem ASP.NET Core Blazor authentication (xác thực) and authorization (phân quyền) và các bài viết khác trong phần Security and Identity (Bảo mật và Danh tính) của Blazor.
Các tính năng bảo mật của ASP.NET Core
ASP.NET Core cung cấp nhiều công cụ và thư viện để bảo mật các ứng dụng ASP.NET Core, chẳng hạn như các nhà cung cấp Identity (danh tính) tích hợp sẵn và các dịch vụ Identity (danh tính) của bên thứ ba như Facebook, Twitter và LinkedIn. ASP.NET Core cung cấp một số phương pháp để lưu trữ bí mật ứng dụng.
Authentication (Xác thực) vs. Authorization (Phân quyền)
Authentication (Xác thực) là quá trình mà người dùng cung cấp thông tin xác thực được so sánh với thông tin xác thực được lưu trữ trong hệ điều hành, cơ sở dữ liệu, ứng dụng hoặc tài nguyên. Khi hai bộ thông tin xác thực khớp nhau, người dùng xác thực thành công. Sau đó họ có thể thực hiện các hành động mà họ được authorization (phân quyền). Quá trình authorization (phân quyền) xác định các hành động mà người dùng được phép thực hiện.
Một cách khác để hiểu về authentication (xác thực) là coi nó như một cách để vào một không gian, nơi không gian đó là máy chủ, cơ sở dữ liệu, ứng dụng hoặc tài nguyên. Authorization (Phân quyền) xác định những hành động nào người dùng có thể thực hiện đối với các đối tượng trong không gian đó (máy chủ, cơ sở dữ liệu hoặc ứng dụng).
Các lỗ hổng phổ biến trong phần mềm
ASP.NET Core và Entity Framework chứa các tính năng giúp bạn bảo mật ứng dụng và ngăn chặn các vi phạm bảo mật. Danh sách liên kết dưới đây dẫn đến tài liệu mô tả chi tiết các kỹ thuật để tránh các lỗ hổng bảo mật phổ biến nhất trong ứng dụng web:
- XSS (Kịch bản chéo trang) - Cross-Site Scripting attacks (Tấn công XSS)
- SQL queries > SQL injection attacks (Tấn công SQL injection)
- CSRF/XSRF (Giả mạo yêu cầu chéo trang) - Cross-Site Request Forgery attacks (Tấn công CSRF/XSRF)
- Open redirect attacks (Tấn công chuyển hướng mở)
Còn nhiều lỗ hổng khác mà bạn nên biết. Để biết thêm thông tin, hãy xem các bài viết khác trong phần Security and Identity (Bảo mật và Danh tính) của mục lục.
Các luồng authentication (xác thực) bảo mật
Chúng tôi khuyến nghị sử dụng tùy chọn authentication (xác thực) bảo mật nhất. Đối với các dịch vụ Azure, authentication (xác thực) bảo mật nhất là managed identities (danh tính được quản lý).
Tránh sử dụng Resource Owner Password Credentials (ROPG) grant:
- Nó để lộ mật khẩu của người dùng cho client (máy khách).
- Đây là một rủi ro bảo mật nghiêm trọng.
- Chỉ sử dụng khi các luồng authentication (xác thực) khác không khả thi.
Managed identities (Danh tính được quản lý) là cách xác thực bảo mật với các dịch vụ mà không cần lưu trữ thông tin xác thực trong code, biến môi trường hoặc tệp cấu hình. Managed identities (Danh tính được quản lý) có sẵn cho các dịch vụ Azure và có thể được sử dụng với Azure SQL, Azure Storage và các dịch vụ Azure khác:
- Managed identities (Danh tính được quản lý) in Microsoft Entra for Azure SQL
- Managed identities (Danh tính được quản lý) for App Service and Azure Functions
- Secure authentication flows (Các luồng xác thực bảo mật)
Khi ứng dụng được triển khai lên máy chủ thử nghiệm, có thể sử dụng biến môi trường để đặt chuỗi kết nối tới máy chủ cơ sở dữ liệu thử nghiệm. Để biết thêm thông tin, hãy xem Configuration (Cấu hình). Các biến môi trường thường được lưu trữ dưới dạng văn bản thuần túy, không được mã hóa. Nếu máy hoặc tiến trình bị xâm phạm, các biến môi trường có thể bị các bên không đáng tin cậy truy cập. Chúng tôi không khuyến nghị sử dụng biến môi trường để lưu trữ chuỗi kết nối production (sản xuất) vì đây không phải là cách tiếp cận bảo mật nhất.
Hướng dẫn về dữ liệu cấu hình:
- Không bao giờ lưu trữ mật khẩu hoặc dữ liệu nhạy cảm khác trong code của configuration provider (nhà cung cấp cấu hình) hoặc trong các tệp cấu hình dạng văn bản thuần túy. Công cụ Secret Manager có thể được dùng để lưu trữ bí mật trong quá trình phát triển.
- Không sử dụng bí mật production (sản xuất) trong môi trường phát triển hoặc thử nghiệm.
- Chỉ định bí mật bên ngoài dự án để chúng không vô tình bị commit vào kho lưu trữ mã nguồn.
Để biết thêm thông tin, hãy xem:
- Managed identity best practice recommendations (Khuyến nghị thực hành tốt nhất cho danh tính được quản lý)
- Connecting from your application to resources without handling credentials in your code (Kết nối từ ứng dụng của bạn đến tài nguyên mà không cần xử lý thông tin xác thực trong code)
- Azure services that can use managed identities to access other services (Các dịch vụ Azure có thể sử dụng danh tính được quản lý để truy cập các dịch vụ khác)
- IETF OAuth 2.0 Security Best Current Practice (Section 2.4. Resource Owner Password Credentials Grant)
Để biết thông tin về các nhà cung cấp đám mây khác, hãy xem:
- AWS (Amazon Web Services): AWS Key Management Service (KMS)
- Google Cloud Key Management Service overview (Tổng quan về dịch vụ quản lý khóa Google Cloud)
Mô hình ứng dụng web doanh nghiệp
Để được hướng dẫn về việc tạo ứng dụng ASP.NET Core đáng tin cậy, bảo mật, hiệu năng cao, có thể kiểm thử và có thể mở rộng, hãy xem Enterprise web app patterns (Mô hình ứng dụng web doanh nghiệp). Một ứng dụng web mẫu chất lượng production (sản xuất) hoàn chỉnh triển khai các mô hình này đang có sẵn.
Nội dung liên quan
- Introduction to Identity (Danh tính) on ASP.NET Core
- Enable QR code generation for TOTP authentication (Bật tạo mã QR cho xác thực TOTP)
- Using external login providers with Identity (Danh tính) in ASP.NET Core (Sử dụng nhà cung cấp đăng nhập bên ngoài với Identity trong ASP.NET Core)
- Identity management solutions (Giải pháp quản lý danh tính) for .NET web apps