自动化安全的最佳做法

Visual Studio 自动化开发人员必须对安全漏洞有所了解,才能明白并担当起创建安全的应用程序的责任。 一个安全的应用程序应可保护客户信息的机密性、完整性和可用性。 此外,还应保护系统所有者或管理员所控制的正在处理的资源的完整性和可用性。

我们这里讨论的安全漏洞是指产品中的缺陷,此缺陷让攻击者(即使正确使用产品时)可以:

  • 盗用用户系统上的特权,

  • 调整、更改或重定向用户系统上操作,

  • 危害用户系统上数据的安全,

    - 或 -

  • 赚取未授予的信任。

重要

永远不要假定应用程序将只会在少数给定的环境中运行,特别是当应用程序的应用非常广时。它很有可能将用于其他无法预料的设置下。因而,应假定代码将在最恶意的环境中运行,并相应地设计、编写并测试代码。

打造安全的应用程序有很多好处。 若最初就考虑到安全性,这样设计和生成的代码比事后再添加安全性机制的代码更为可靠。 考虑安全性设计的应用程序还更能经受媒体的批评,对用户更有吸引力,并且修复和支持的成本更少。

危险的 API

从安全的角度考虑,可认为某些 API 函数比其他函数更危险。 一些函数有可能其作用的方式本身就是危险的。 其他函数可能会因为不正确的调用或处理而变得危险。 关键是您应该熟悉所调用的各种 API 函数的缺陷和特别之处,如果它们会带来任何安全风险,请确保正确使用它们。

另外,请不要假定由于您的代码只使用了被认为“安全的”API 函数,因此您的应用程序就会自动变成安全可靠的。 如果在编写程序时粗心大意,可能会使您的应用程序面临与使用被认为是“危险的”函数同样的或者更大的风险。 这样的做法包括:

  • 没有正确地处理异常,

  • 使用硬编码路径,

  • 使用硬编码连接字符串,

    - 或 -

  • 没有检查用户凭据或权限是否正确。

若要保护您的应用程序,则应通过研究这个主题来彻底了解代码安全问题。 Microsoft Press 出版的图书“Writing Secure Code”(编写安全代码)以及位于 https://msdn2.microsoft.com/en-us/library/d55zzx87.aspx 站点上的“Security Coding Guidelines”(安全编码指南)都是很好的资源。

另一个要了解的重点是,很多安全问题都是由于应用程序盲目信任数据输入而引起的。 您的应用程序在使用收到的数据之前,必须仔细检查并评估这些数据,以验证数据是否格式良好以及值得信任。

自动化安全功能

除了遵循这些准则之外,Visual Studio 自动化还提供一些简单而具体的方法帮助您保护系统,防范自动化安全威胁。 但请记住,它们并不能解决所有的安全问题。 但这是一个好的开始。 有关信息,请参见 外接程序安全性

在生成自动化应用程序前,请研究并仔细遵循 .NET 安全准则。

请参见

其他资源

用于创建安全应用程序的资源

安全性的基础概念