本主题包含关于推荐的安全工具和做法的信息。使用这些资源和工具并不会使应用程序免受攻击,但能降低攻击得逞的可能性。
Visual C++ 安全功能
本节讨论内置于 Visual C++ 编译器和链接器中的安全功能。
-
/GS(缓冲区安全检查)
-
此编译器选项(默认情况下处于打开状态)指示编译器将溢出检测代码插入到面临被利用的风险的函数中。当检测到溢出时,将中断执行。
-
/SAFESEH(图像具有安全异常处理程序)
-
此链接器选项(默认情况下不启用)指示链接器要包含到输出映像(一个包含各个异常处理程序的地址的表)中。在运行时,操作系统使用此表来确保只执行合法的异常处理程序。这有助于防止执行由运行时黑客攻击引入的异常处理程序。
-
/analyze(企业代码分析)
-
此编译器选项(默认情况下不启用)激活代码分析,此分析报告潜在的安全问题,例如缓冲区溢出、未初始化的内存、空指针取消引用和内存泄漏等。有关更多信息,请参见 C/C++ 代码分析概述。
增强了安全性的 CRT
对于 Visual C++ 2005,已增加了 C 运行时库 (CRT) 以包含带来安全风险的函数的安全版本。(例如,未经检查的 strcpy 字符串复制函数。)这些函数的早期、不安全的版本现已被否决,所以使用它们将导致编译时警告。强烈建议程序员使用这些 CRT 函数的安全版本,而不是取消这些编译警告。有关更多信息,请参见 Security Enhancements in the CRT。
经过检查的迭代器
借助于经过检查的迭代器,标准 C++ 库容器类的用户可在尝试访问容器边界以外的元素时得到通知。有关更多信息,请参见 Checked Iterators。
托管代码的代码分析
托管代码的代码分析,又称 FxCop,是检查程序集与 Microsoft .NET Framework 设计准则的一致性的工具。FxCop 分析各个程序集内的代码和元数据以检查下列领域中的缺陷:
-
库设计
-
本地化
-
命名约定
-
性能
-
安全性
托管代码的代码分析包含在 Visual Studio Team System 中,也可从以下地址下载:http://www.gotdotnet.com/team/fxcop/。
Windows 应用程序验证工具
作为应用程序兼容性工具包的一部分,应用程序验证工具 (AppVerifier) 是一种可帮助开发人员标识潜在的应用程序兼容性、稳定性和安全问题的工具。
AppVerifier 的工作方式是:在应用程序运行时,监控操作系统的应用程序的使用情况,包括文件系统、注册表、内存和 API。然后,此工具提供它发现的问题的源代码级修复的指导。
验证工具可使您:
-
检测由常见编程错误导致的潜在应用程序兼容性错误。
-
检查应用程序是否有与内存相关的问题。
-
确定应用程序与 Designed for Windows XP 或 Certified for Windows Server™ 2003 徽标计划的各种要求的一致性。
-
标识应用程序中潜在的安全问题。
Windows 应用程序验证工具可从 http://www.microsoft.com/windows/appcompatibility/appverifier.mspx 获得。
.NET Framework 安全功能
本节概述两个相关的 .NET Framework 安全功能。
-
代码访问安全性
-
描述 .NET Framework 安全系统以及它如何与应用程序代码接口。
-
配置安全策略
-
描述用于调整 .NET Framework 安全策略的指导和工具。
Windows 用户帐户
使用属于 Administrators 组的 Windows 用户帐户使开发人员和最终涉及到的客户暴露在安全风险下。有关更多信息,请参见 作为用户组的成员运行。