ASP.NET服务器自定义控件安全准则

开发 后端
ASP.NET服务器自定义控件是扩展ASP.NET Web服务器控件的功能的一种方式。本文文提供了针对ASP.NET服务器自定义控件用户和开发人员的基本安全准则。

ASP.NET服务器自定义控件是扩展ASP.NET Web服务器控件的功能的一种方式。一些IDE(如 Microsoft Visual Studio 2005)简化了自定义控件的使用及开发,但是,无论使用哪一种IDE,都要注意ASP.NET服务器自定义控件安全问题。下面列出了ASP.NET服务器自定义控件常见的安全准,对几乎所有IDE均适用。

针对ASP.NET服务器自定义控件用户的准则

您可以通过多种方式在Web 应用程序中使用ASP.NET服务器自定义控件,例如,可以将源代码文件直接放在 Web 应用程序的 App_Code 文件夹中,从全局程序集缓存使用控件,或者使用通过自动安装程序(如 Visual Studio 内容安装程序)安装的社区组件。无论在何种情况下,都应采取防范措施以防止导入恶意代码或对 IDE 和承载组件的服务器产生意外但有负面影响的代码。

下面提供了用户应考虑的一些ASP.NET服务器自定义控件安全准则。此列表可能不够全面,但可以从此着手进行调查:

◆不要使用不熟悉的代码或不了解其安全隐患的代码。对于社区组件,建议您阅读可用的发行者信息并确定是否对组件进行了签名。 有关更多信息,请参见 How to: Package Community Components to Use the Visual Studio Content Installer 和 如何:打包社区组件以使用 Visual Studio 内容安装程序. 内容来自dedecms

◆不要仅仅考虑ASP.NET服务器自定义控件的运行时安全性,还要考虑其设计时安全性。

◆如果可能,在强名称程序集中使用自定义控件并选择受信任的发行者。有关更多信息,请参见如何:确定程序集的完全限定名。

◆使用最少特权帐户运行包括导入的控件的ASP.NET Web应用程序。有关使用具有最低权限的标识运行 ASP.NET 进程的更多信息,请参见配置 ASP.NET 进程标识。在诸如 Visual Studio 2005 或 Visual Web Developer 速成版这样的 IDE 中,除非您需要执行管理任务,否则以普通用户的身份而不要以管理员的身份运行应用程序。 有关更多信息,请参见 User Rights and Visual Studio 和用户权限和Visual Studio.

◆查看承载ASP.NET服务器自定义控件的ASP.NET服务器上的操作系统安全性和 Windows 访问控制列表 (ACL)。例如,应确保使用仅具有运行应用程序所需的最低权限的标识来运行 ASP.NET 进程,这样便可将自定义服务器控件导致的安全漏洞对其他承载的应用程序的影响降至最低。有关更多信息,请参见配置 ASP.NET 进程标识。另外,查看自定义服务器控件的权限,并确保它们遵循文件和文件夹权限,ASP.NET Web 应用程序的标识必须具有该权限才能正常工作。

◆使用代码访问安全性来限制 Web 应用程序(具有自定义服务器控件)可以访问的资源和可以执行的特权操作。

◆使用 .NET Framework 配置工具 (Mscorcfg.msc) 在全局程序集缓存中管理和配置程序集并调整代码访问安全性策略。因为 Mscorcfg.msc 的用途是帮助高级管理员执行与配置应用程序相关的任务,因此与您的系统管理员合作以确定使用该工具是否符合您的情况。

针对ASP.NET服务器自定义控件开发人员的准则

作为ASP.NET服务器自定义控件的开发人员,您应遵循 ASP.NET 应用程序页和控件以及 .NET Framework 中安全性的常规最佳做法。在许多情况下,自定义服务器控件的用户可能不了解所有实现的详细信息或安全隐患。但是,您应该通过以下内容来计划这一事项:遵循既定的安全约定,并清楚地指出组件正常工作所需的所有权限。您可以从 ASP.NET 网站安全性、.NET Framework 开发人员指南、安全性的基础概念以及“Patterns and Practices Web site”(模式和做法网站) 中安全性主题来着手对ASP.NET服务器自定义控件安全性问题和解决方法进行调查。

设计和实现自定义Web 服务器控件后,必须确定将组件提供给用户的方法。有两种常用的提供方法:作为程序集提供或作为社区组件提供。如果将组件作为程序集提供,您应对程序集进行签名(也称强名称签名)。签名为程序集提供了唯一标识,其他软件可以使用该标识来识别该程序集并显式引用该程序集。同时,这一方法还可以提供其他好处,使用程序集编程中对这些好处进行了详细介绍。

如果作为具有自动安装过程的社区组件来提供组件,那么您应以加密方式对组件进行签名。签名可以通过创建对特定方唯一的数字签名来帮助验证数据是否发自特定方。其中,创建用于 Visual Studio 2005 的社区组件的一种方法是:使用 Visual Studio 内容安装程序并创建可以对其进行签名的 .vsi 文件。 有关更多信息,请参见 How to: Package Community Components to Use the Visual Studio Content Installer 和 如何:打包社区组件以使用 Visual Studio 内容安装程序. dedecms.com

下面提供了在开发自定义服务器控制组件时应考虑的一些ASP.NET服务器自定义控件安全准则。此列表可能不够全面,但可以从此着手进行调查:

◆与ASP.NET服务器自定义控件一同提供有关如何使用这些控件的说明,以及对这些控件正常运行所需的资源和权限的要求。

对组件进行数字签名。如果将自定义控件打包为程序集,则使用强名称对该程序集进行签名。有关更多信息,请参见创建和使用具有强名称的程序集。如果使用自动安装程序(如 Visual Studio 内容安装程序),您仍需要对组件进行签名。 有关更多信息,请参见 How to: Package Community Components to Use the Visual Studio Content Installer 和 如何:打包社区组件以使用 Visual Studio 内容安装程序.

◆遵循代码中的异常管理的最佳做法。

◆如果您希望页开发人员将ASP.NET服务器自定义控件添加到可视化设计器的工具箱,则将它们拖到设计图面上,并在属性浏览器中访问其属性和事件,而且,除了要考虑运行时安全性外,还要考虑设计时安全性。有关更多信息,请参见保证自定义控件设计器组件的安全。

◆了解对 Web 应用程序页和控件的最高威胁,包括代码注入、信息泄漏、会话劫持、身份欺骗、参数操作和网络监听。为此,应在部署前完成对组件的威胁建模分析。

【编辑推荐】

  1. 如何用ASP.NET服务器自定义控件还原表单
  2. ASP.NET服务器控件使用和设置技巧
  3. ASP.NET服务器控件之生命周期浅析
  4. ASP.NET服务器端控件CheckBoxList
  5. ASP.NET服务器控件的优化选择
责任编辑:老杨 来源: MSDN
相关推荐

2011-05-19 10:16:27

ASP.NET

2009-08-01 09:21:12

ASP.NET服务器自ASP.NET服务器控ASP.NET

2009-08-06 17:13:56

ASP.NET自定义控

2009-07-28 09:32:41

ASP.NET自定义控

2009-08-10 14:16:59

ASP.NET自定义控

2009-07-31 10:23:09

ASP.NET源码DateTimePic

2011-04-19 10:33:16

ASP.NET自定义控

2009-08-06 09:18:01

ASP.NET自定义控ASP.NET控件开发

2009-08-04 13:10:05

ASP.NET服务器控

2009-08-10 14:08:15

ASP.NET服务器控ASP.NET组件设计

2009-08-03 18:00:00

ASP.NET服务器控

2011-07-12 15:17:02

ASP.net服务器控件

2009-08-04 17:18:37

2009-08-10 14:25:33

ASP.NET服务器控

2009-07-30 16:52:38

复合控件ASP.NET服务器控

2009-08-05 17:58:53

自定义集合ASP.NET 2.0

2009-08-06 17:52:45

ASP.NET控件开发自定义控件

2009-08-04 13:39:43

ASP.NET 2.0

2009-07-27 12:56:27

控件CheckBoxLASP.NET服务器

2009-08-04 15:13:38

点赞
收藏

51CTO技术栈公众号