框架更新

已完成

许多开发人员主要是根据功能和个人偏好来决定使用哪种框架和库来构建软件。 但是,选择框架是一个重要决策,不仅要考虑到设计和功能,而且要考虑到安全方面。 选择具有新式安全功能的框架并使其保持最新,是确保应用安全的最佳方式之一。

谨慎选择框架

选择框架时,最重要的安全因素是该框架的受支持力度如何。 最佳的框架有明确的安全规划,并受到致力于改进和测试框架的大社区的支持。 任何软件都不可能做到完全无 bug 或绝对安全,但识别漏洞后,我们需要确保快速解决该漏洞或提供解决方法。

通常,“新式”就意味着“良好的支持”。 旧式框架会逐步被取代,或者最终丧失普及性。 即使你对使用旧式框架(编写的许多应用)拥有丰富的经验,也最好是选择具有所需功能的新式库。 新式框架往往构建在过去更新换代时学到的经验教训基础之上,为新应用选择这种框架可以减少威胁面。 在用于编写旧版应用程序的旧式框架中发现漏洞时,会多一个需要担心的应用。

有关安全设计和减少威胁面的详细信息,请参阅 Microsoft Azure 架构良好的框架 - 安全性

保持框架处于最新状态

软件开发框架(例如 Java Spring 和 .NET Core)会定期发布更新和新版本。 这些更新会包含新功能并删除旧功能,并且通常会包含安全修补程序或改进。 如果允许框架过时,则会产生“技术债务”。框架越过时,发布代码最新版本的难度就越高,且风险越大。 此外,与初始选择框架时一样,沿用旧版框架会曝露在更多的安全威胁之中,而新版框架会解决这些威胁。

例如,在 2016 年到 2017 年,在 Apache Struts 框架中发现了 30 多个漏洞。 开发团队很快解决了这些漏洞,但有些公司未应用修补程序,数据违规让它们付出了代价请务必保持框架和库的最新状态

如何更新框架?

某些框架(例如 Java 或 .NET)需要安装,并按已知的频率发布。 最好是先等待新版本,并计划好创建代码的分支,以便在新版本发布时试用它。 例如,.NET Core 维护一个发行说明页,可在其中检查是否有最新版本可用。

JavaScript 框架或 .NET 组件等更专业的库可通过包管理器进行更新。 NPM 和 Webpack 是适合 Web 项目的热门选项,受大多数 IDE 或生成工具支持。 在 .NET 中,我们使用 NuGet 来管理组件依赖项。 与更新核心框架一样,创建代码的分支、更新组件并进行测试是验证依赖项新版本极佳的方法。

注意

dotnet 命令行工具提供 add packageremove package 选项用于添加或删除 NuGet 包,但没有对应的 update package 命令。 但是,可以改为在项目中运行 dotnet add package <package-name>,它会自动将包升级到最新版本。 这是更新依赖项的简便方法,无需打开 IDE。

利用内置安全性

始终检查框架提供哪些安全功能。 如果有标准的技术或内置功能,切勿实施自己的安全功能。 此外,请依赖成熟的算法和工作流,因为它们通常已经过专家的审查、评判和增强,可以确信它们是可靠且安全的。

.NET Core 框架提供无数的安全功能。 下面是在文档中介绍过的几个核心入门功能:

其中的每项功能由领域专家编写,并通过全方位的测试,确保它按预期方式工作,并且只会按意图工作。 其他框架提供类似功能;请咨询框架的供应商,了解他们在每个类别中所提供的功能。

警告

如果自行编写安全控件,而不使用框架提供的代码,这不仅浪费时间,而且不太安全。

Microsoft Defender for Cloud

使用 Azure 托管 Web 应用程序时,如果框架过时,则 Defender for Cloud 会在“建议”选项卡中发出警告。请记得不时查看是否出现了与你的应用相关的任何警告。

Screenshot of Microsoft Defender for Cloud recommending a framework upgrade.

总结

尽量选择新式框架来构建应用,始终使用内置安全功能,并确保保持框架的最新状态。 这些简单的规则将帮助确保你的应用程序具有坚实的基础。