您的位置:知识库 » .NET技术

使用VS2010代码分析功能增强ASP.NET应用程序安全

来源: 51CTO  发布时间: 2010-12-21 16:28  阅读: 2874 次  推荐: 0   原文链接   [收藏]  
摘要:任何从事ASP.NET开发的人都不得不承认,在其职业生涯中曾经遇到过应用程序安全问题,开发人员常常被迫尽快交付代码,平台的复杂性和各种配置选项让应用程序的安全总达不到预期,此外,调试和生产环境的配置要求可能会不同,因此,一个常见的问题是将调试配置引入到生产环境,从而造成各种问题。

  任何从事ASP.NET开发的人都不得不承认,在其职业生涯中曾经遇到过应用程序安全问题,开发人员常常被迫尽快交付代码,平台的复杂性和各种配置选项让应用程序的安全总达不到预期,此外,调试和生产环境的配置要求可能会不同,因此,一个常见的问题是将调试配置引入到生产环境,从而造成各种问题。

  经过多年的发展,ASP.NET平台已经成熟,MSDN和社区博客也产生了大量优秀的文档,但确定使用哪些功能或配置往往是件麻烦事,即使开发人员有着良好的安全意识和安全技能,错误总是在所难免,程序中的漏洞仍然很多。同行代码审查是一个有用的过程,也是早期捕捉问题的很好方法,但不是每个人都有时间或预算做同行评审。

  自Visual Studio 2005引入代码分析功能以来,开发人员可以自动分析他们的代码,查看是否遵守了设计、可维护性、性能和安全性的最佳实践,虽然代码分析是个好东西,但它一直未为ASP.NET提供最佳安全实践指南,直到现在。本文将向你介绍新的ASP.NET代码分析规则,包括Visual Studio代码分析功能和独立的FxCop提高ASP.NET应用程序的安全性。

  概述
  你可以从go.microsoft.com/-?linkid=9750555下载Visual Studio 2010 ASP.NET安全代码分析规则包和FxCop v10.0,安装程序包含下面三个新的规则包:
  ASP.NET.Security:它重点在System.Web.Ui.Page属性初始化相关的最佳安全实践。
  ASP.NET.MVC.Security:它重点在如何使用ASP.NET MVC相关的安全最佳实践。
  ASP.NET.Security.Configuration:它重点在web.config文件下的配置元素相关的安全最佳实践。

  规则包安装好后,点击“生成”菜单下“网站”按钮上的“运行代码分析”,开始自动分析Web应用程序的安全,这个过程会分析应用程序的每个Page类和web.config文件,与ASP.NET应用程序最佳安全实践进行对比,给出综合性的分析结果。例如,一个常见的Web应用程序安全漏洞是跨站请求伪造,它允许攻击者以其他用户的身份执行命令,修复这个漏洞的方法是使用Page.ViewStateUserKey属性,你也可以使用ASP.NET MVC中的AntiForgeryToken,这两种技术都可以预防对应用程序的恶意重放攻击,代码分析将有助于确定使用正确的修复方法。

  我从许多开发人员那里得到的反馈是,首次运行代码分析功能时将会得到许多警告,如图1所示,不过这些都是很好解决的问题。

 
图 1 在错误列表警告标签中列出的警告信息

  为了消除这些警告,每个规则包含一个清晰的指令指出必须修复的地方,以及如何修复,如果需要更多信息还应该列出一些参考内容,如图2所示。

 
图 2 警告列表中的详细信息

  代码分析也可以配置为每次生成操作时运行,点击“网站”*“配置代码分析”,然后选中“启用生成时代码分析(定义CODE_ANALYSIS常量)”选项,如图3所示。

 
图 3 开启生成期间的代码分析功能

  使用FxCop进行代码分析

  代码分析功能仅在Visual Studio Premium和Ultimate版中提供,此外,你还可以使用独立的FxCop工具执行ASP.NET代码分析,FxCop是Windows SDK的一部分,最新的Windows SDK 7.1可从这里下载,使用标准的FxCop工具执行分析时需要多做一点工作。

  正常情况下,当你编译Web项目时,页面标记 - 代码隐藏文件中未包括的页面代码 - 不会被