通过 ASP.NET Core,开发者可配置和管理安全性。 以下列表提供了有关在 ASP.NET Core 中使用安全性的文章的链接:
通过这些安全功能,可以生成安全可靠的 ASP.NET Core 应用。
有关 Blazor 安全相关内容(其对本节点中的指南进行了补充或替代),请参阅 ASP.NET Core Blazor 身份验证和授权以及 Blazor 的 安全和Identity 节点中的其他文章。
ASP.NET Core 安全性功能
ASP.NET Core提供了许多工具和库来保护 ASP.NET Core应用,例如内置标识提供者和非Microsoft标识服务,如 Facebook、Twitter 和领英。 ASP.NET Core 提供了多种存储应用机密的方法。
身份验证 vs授权
身份验证是指用户提供凭据,并将其与操作系统、数据库、应用程序或资源中存储的凭据进行比较的过程。 当两组凭据匹配时,用户将成功进行身份验证。 然后,他们便可以执行其已获授权的操作。 授权过程确定允许用户执行的操作。
另一种将身份验证视为 进入 空间的方法,其中空间是服务器、数据库、应用或资源。 授权定义用户可以对该空间(服务器、数据库或应用)内的对象执行的操作。
软件中的常见漏洞
ASP.NET Core和 Entity Framework 包含有助于保护应用并防止安全漏洞的功能。 下表中链接的文档详细介绍了在 Web 应用中避免最常见安全漏洞的技术:
还应注意其他漏洞。 有关详细信息,请参阅目录的“安全性和 Identity”部分中的其他文章。
安全身份验证流程
建议使用最安全的身份验证选项。 对于 Azure 服务,最安全的身份验证是托管标识。
避免使用资源所有者密码凭据(ROPG)授权:
- 它将用户的密码公开给客户端。
- 这是一个重大的安全风险。
- 仅当其他身份验证流不可用时才使用它。
托管标识是对服务进行身份验证的安全方式,无需在代码、环境变量或配置文件中存储凭据。 托管标识可用于 Azure 服务,并可与 Azure SQL、Azure 存储 和其他 Azure 服务一起使用:
将应用部署到测试服务器时,可以使用环境变量向测试数据库服务器设置连接字符串。 有关详细信息,请参阅配置。 环境变量通常以纯文本、未加密的文本存储。 如果计算机或进程遭到入侵,则不受信任的参与方可能会访问环境变量。 建议不要使用环境变量来存储生产连接字符串,因为它不是最安全的方法。
配置数据指南:
- 请勿在配置提供程序代码或纯文本配置文件中存储密码或其他敏感数据。 机密管理器工具可用于存储开发环境中的机密。
- 不要在开发或测试环境中使用生产机密。
- 请在项目外部指定机密,避免将其意外提交到源代码存储库。
有关详细信息,请参阅:
- 托管标识的最佳做法建议
- 从应用程序连接到资源,而无需在代码中处理凭据
- 可以使用托管标识访问其他服务的 Azure 服务
- IETF OAuth 2.0 安全最佳做法(第 2.4 节)。资源所有者密码凭据授予)
有关其他云提供商的信息,请参阅:
企业 Web 应用模式
有关创建可靠、安全、高性能、可测试且可缩放 ASP.NET 核心应用的指南,请参阅 企业 Web 应用模式。 提供了一个完整且具备生产质量的示例 Web 应用,该应用实现了这些模式。