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

简介:   任何从事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项目时,页面标记 - 代码隐藏文件中未包括的页面代码 - 不会被编译,它们会原封不动地停留在应用程序的根目录下,当第一个用户请求页面时,标记被编译进独立的程序集,这样更新网站时就不用重新编译所有代码。

  因为不是所有代码全部自动编译,在分析期间有的代码是不可见的,因此一些重要的安全问题可能被错过,为了确保所有的代码在分析过程中可见,你需要强制预编译所有页面,可以使用“发布网站”工具实现预编译,点击“生成”*“发布网站”即可,这个工具允许你配置如何发布网站,以及开启预编译功能,取消“允许预编译网站以更新”选项,点击“确定”,如图4所示,这样就会完整编译整个网站进行分析。


图 4 使用预编译发布网站

  ASP.NET分析只需要FxCop命令行版本的功能,打开命令提示符窗口,切换到FxCop安装目录,如果你是32位Windows,则可能是:C:\Prog上海企业网站制作ram Files (x86)\Mic上海闵行企业网站制作rosoft FxCop 10.0,如果是64位Windows,则可能是:C:\Program Files\Microsoft FxCop 10.0。从FxC上海徐汇企业网站制作:white;' href='http://www.93tj.com'>上海网站建设op安装目录运行Fxcop-cmd.exe开始代码分析,对于一个ASP.NET网站,使用下面这样的命令:

图5

  /file参数指出要分析的程序集,在这个例子中,我预编译的网站程序集在H:\MSDN\PrecompiledWeb\MSDNSampleSite\bin下。
  /rule参数指定分析期间使用的规则,对于这个例子,我只使用了三个ASP.NET安全规则:AspNetConfigurationSecurityRules.dll,AspNetMvcSecurity-Rules.dll和ASPNetSecurityRules.dll。
  /aspnet参数表示开启ASP.NET分析,/console参数指出分析结果输出到命令行窗口。

  结语

  让ASP.NET网站更安全是一项艰巨的任务,ASP.NET安全代码分析规则算是帮了一个大忙,至少你帮你确定一些重大的威胁,正如你从这篇文章看到的,其分析过程很简单,可以配置为每次生成上海闵行企业网站设计与制作时运行,让你可以及早发现问题。

  我建议将规则部署到每个开发人员的机器上,也将它们作为TFS(Team Foundation Sever)或其它代码仓库检入(check in)策略的一部分,以便每个开发人员都可以在生成时执行代码分析和策略。你也可以定制自己的代码分析规则,如果你想就此做进一步学习和研究,建议去由Duke Kamstra维护的代码分析团队博客逛逛,此外,在Tatham Oddie的博客中也有很多优秀的文章。

目录
相关文章
|
15天前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
61 13
|
1月前
|
开发框架 安全 .NET
在数字化时代,.NET 技术凭借跨平台兼容性、丰富的开发工具和框架、高效的性能及强大的安全稳定性,成为软件开发的重要支柱
在数字化时代,.NET 技术凭借跨平台兼容性、丰富的开发工具和框架、高效的性能及强大的安全稳定性,成为软件开发的重要支柱。它不仅加速了应用开发进程,提升了开发质量和可靠性,还促进了创新和业务发展,培养了专业人才和技术社区,为软件开发和数字化转型做出了重要贡献。
24 5
|
3月前
|
开发框架 前端开发 .NET
VB.NET中如何利用ASP.NET进行Web开发
在VB.NET中利用ASP.NET进行Web开发是一个常见的做法,特别是在需要构建动态、交互式Web应用程序时。ASP.NET是一个由微软开发的开源Web应用程序框架,它允许开发者使用多种编程语言(包括VB.NET)来创建Web应用程序。
69 5
|
2月前
|
XML 存储 安全
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
97 0
|
3月前
|
Ubuntu 持续交付 API
如何使用 dotnet pack 打包 .NET 跨平台程序集?
`dotnet pack` 是 .NET Core 的 NuGet 包打包工具,用于将代码打包成 NuGet 包。通过命令 `dotnet pack` 可生成 `.nupkg` 文件。使用 `--include-symbols` 和 `--include-source` 选项可分别创建包含调试符号和源文件的包。默认情况下,`dotnet pack` 会先构建项目,可通过 `--no-build` 跳过构建。此外,还可以使用 `--output` 指定输出目录、`-c` 设置配置等。示例展示了创建类库项目并打包的过程。更多详情及命令选项,请参考官方文档。
235 11
|
3月前
|
存储 运维
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
|
3月前
|
自然语言处理 C# 图形学
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
|
4月前
|
开发框架 监控 安全
.NET 应用程序安全背后究竟隐藏着多少秘密?从编码到部署全揭秘!
【8月更文挑战第28天】在数字化时代,.NET 应用程序的安全至关重要。从编码阶段到部署,需全面防护以保障系统稳定与用户数据安全。开发者应遵循安全编码规范,实施输入验证、权限管理和加密敏感信息等措施,并利用安全测试发现潜在漏洞。此外,部署时还需选择安全的服务器环境,配置 HTTPS 并实时监控应用状态,确保全方位防护。
60 3
|
4月前
|
开发框架 JSON .NET
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
|
4月前
|
开发框架 .NET 开发工具
【Azure 应用服务】App Service 的.NET Version选择为.NET6,是否可以同时支持运行ASP.NET V4.8的应用呢?
【Azure 应用服务】App Service 的.NET Version选择为.NET6,是否可以同时支持运行ASP.NET V4.8的应用呢?