`
isiqi
  • 浏览: 16033738 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

ASP.NET - 保护 Web 部件页

阅读更多

Web 部件是 ASP.NET 的一项新功能,它赋予最终用户修改或个性化网页的能力。对于 Web 应用程序的用户来说,个性化网页具有强大的功能,但也带来开发人员应该了解的安全隐患。

由于 Web 部件是一种 ASP.NET 功能,而 Web 部件控件是扩展的 ASP.NET 服务器控件,因此,Web 部件页容易遭受所有与 ASP.NET 页相同的风险。具有使用 Web 部件控件的页的 Web 应用程序实际上不过是一种专用类型的 ASP.NET 应用程序,而使用 Web 部件的应用程序可以运行在普通 ASP.NET 应用程序可以运行的任何信任级别上。不过,Web 部件具有普通 ASP.NET 页所不具有的一些特殊的安全问题。以下几节对这些问题进行了探讨。

1、导入控件数据

最具安全风险的 Web 部件功能就是导入功能。该功能允许用户导入包含服务器控件(该控件的程序集文件在 Web 服务器上必须可用)的状态数据和属性数据的 XML 说明文件。为控件导入数据是用户共享数据以及轻松配置复杂控件的一种方法。但这种做法具有内在风险:说明文件中可能存在恶意数据。例如,如果有人将恶意脚本代码作为字符串属性的值放在说明文件中,则当用户导入说明文件并将引用的服务器控件添加到网页时,就有可能执行该脚本。若要使导入带有恶意数据的说明文件的风险降到最低,具有字符串类型属性的服务器控件应该始终对属性数据进行编码。其他风险包括通过说明文件导入的类型(请参见 Web 部件控件说明文件)。恶意用户可以通过提交请求将许多程序集加载到 AppDomain 中,导致大量内存被占用。若要消除与导入有关的风险,只需不使用实现导入的服务器控件以完全禁用导入功能即可。另外,也可以限制哪些用户可以访问该控件。例如,可以使用角色管理。如果用户为管理员角色,则可以以编程方式为此用户向该页添加 ImportCatalogPart

2、导出控件数据

导出功能的风险与导入功能基本相同,这是因为它会泄漏敏感数据。导出功能可以帮助用户将特定控件的属性和状态数据保存到 XML 说明文件。(该文件就是可以使用导入功能导入的文件。)此处的主要风险在于用户可能会将敏感数据从应用程序导出到说明文件,而说明文件是一个简单的文本文件,具有适当权限的任何人都可以读取它。默认情况下,ASP.NET 中禁用导出功能,因此,如果不需要使用该功能,可以放心地忽略它。显然,这是最安全的选择。

如果确实需要启用导出功能,应该知道用于确定可导出哪些属性的选项。在创建将在 WebPartZone 区域中使用的 WebPart 或服务器控件时,对于希望能导出的各公共属性 (Property),可以为其添加 Personalizable 元数据属性 (Attribute)。这样,如果启用导出功能,属性将可以导出,并且还将向用户显示一个消息框,警告用户将导出数据。Personalizable 属性的其中一个参数称为 IsSensitive。这是一个布尔型参数,如果您希望某个属性在某些情况下可导出,而在其他情况下又不可导出,此参数将非常有用。

3、了解个性化设置的详细信息

Web 部件个性化设置功能可以使用户根据自己的喜好修改网页并将其设置保存在长期存储中,从而使个性化页在浏览器会话过程中保持这些设置。大多数 Web 部件功能都要求个性化设置;因此,虽然仅在包含 Web 部件控件的页上才使用该功能,但在默认情况下,ASP.NET 网站启用该功能。正是由于个性化设置的功能如此强大,它也带来了一定程度的风险。用户能够修改网页的实际布局、外观甚至内容和控件。个性化设置数据存储在一个数据库中,并用于呈现页,因此,用户很可能实施与网站内容相关的恶意活动。可以访问共享个性化设置范围的用户甚至可以更改页面向所有用户呈现的方式。

如果某个特定页使用 Web 部件功能但不要求个性化设置(例如,门户站点中的公用页之一),则最好禁用个性化设置,因为这样可以提高性能并降低站点的安全风险。

4、对用户进行身份验证以进行个性化设置

个性化设置要求对用户进行身份验证。对于匿名用户是无法启用个性化设置的。这意味着,若要获得完整的个性化设置和 Web 部件功能,网站必须使用基于 Windows 或基于窗体的身份验证。

5、将最低访问权限授予共享个性化设置

Web 部件个性化设置的更改总是应用于指定范围的用户。只有做出更改的用户才能看到对用户范围所做的更改,但所有用户都可以看到对共享范围所做的更改。共享个性化设置范围之所以存在,是为了使管理员或管理角色的用户可以对应用于站点所有用户的页进行更改。在默认情况下,所有用户都不能访问共享范围。只有所选用户才能获得访问权限,这应该在网站的配置文件中显式进行。

6、使用经过测试且受信任的控件

由于 Web 部件可以为用户提供强大的功能(如在页中添加新服务器控件的能力),因此,开发人员应该特别注意在 Web 部件应用程序中使用哪些服务器控件。应该对服务器控件(尤其是来自第三方或供应商的控件)仔细地进行检查和测试,以确保它们能可靠地用于 Web 部件应用程序。例如,假设某个特定服务器控件设计不佳,导致内存使用率低。如果将该控件添加到 Web 部件目录中,用户就有可能将其添加到网页上。而由于可以将目录中的控件任意多次地(多个实例)添加到页上,因而用户可能多次添加该执行性能不佳的控件。当页面试图处理该控件的多个实例时,实际上就可能产生“拒绝服务”攻击。

7、对控件使用授权和筛选

Web 部件有一项功能,通过它,可以设置和检查用于创建 Web 部件页的用户界面 (UI) 的服务器控件的授权级别。如果控件是根据您设置的条件授权的,它将显示在页上;如果控件是在较低级别上授权或根本未授权,则您可以相应地更改其外观或完全隐藏它。例如,假定有一个用户被指定为管理员。您可能希望只有管理员才能看到某个服务器控件。使用 Web 部件的授权和筛选功能,可以确保只有指定的管理员才能看到该控件,而其他用户则看不到该控件。使用授权和筛选功能的主要机制为:WebPart 类的 AuthorizationFilter 属性,以及 WebPartManager 类的 IsAuthorized OnAuthorizeWebPart 方法。

8、在编辑控件中对字符串类型的属性进行编码

Web 部件有一项独特的功能,即最终用户可以将页切换到编辑模式,他们可以通过更改其布局、外观、行为以及可个性化的属性值来编辑服务器控件。不过,这一功能带来了一定的风险,因为恶意用户可以借助此功能编辑字符串类型的属性,从而插入不恰当的数据或者试图发起脚本注入式攻击。如果创建自定义 EditorPart 控件来编辑服务器控件,并且如果指定的服务器控件中有任何可个性化的属性属于字符串类型或者使用字符串转换器,则 EditorPart 控件应该先对字符串数据进行编码,然后再将其分配给该属性,这是一种安全的做法。

分享到:
评论

相关推荐

    ASP.NET基础教程

    本书结合实例,全面系统地介绍了ASP.NET 2.0应用开发技术,...成员、角色管理和登录控件,用户配置和个性化,Web部件,状态管理,在ASP.NET 2.0中使用XML,提高网站性能的方法,跟踪和调试ASP.NET 2.0应用程序等内容。

    ASP.NET_4高级程序设计__第4版_高清版

    ASP.NET_4高级程序设计__第4版_高清版 第一部分 核心概念 第1 章 ASP.NET 简介 2 第2 章 Visual Studio 16 第3 章 Web 窗体 58 第4 章 服务器控件 97 第5 章 ASP.NET 应用程序 137 第6 章 状态管理 177 第二部...

    ASP.NET 2.0开发技术大全

    包括认识ASP.NET 2.0、ASP.NET 2.0网页语法、字符串与日期处理、Page对象...Web Part部件、母版页、主题、SQL语句在ASP.NET中的应用、高性能数据处理技术、ADO.NET数据库技术、数据绑定控件、ASP.NET数据缓存技术、站点...

    ASP.NET4权威指南源代码下载

    第四部分是本书的高级话题,分析了ASP.NET状态管理、自定义服务器控件、ASP.NET缓存、多语言本地化应用程序、ASP.NET Web部件等。从深度上来讲,本书对实际开发中极不常用而大部分同类书都浓墨重彩的知识点只做了...

    asp.net教学讲义

    1.3 ASP.NET 页的结构 12 1.3.1 @Page指令 13 1.3.2 ASP.NET的服务器端脚本 14 1.3.3 服务器端脚本示例: 14 1.3.4 后台编码模型 15 1.4 Page事件(页面事件) 15 1.4.1 Page类 15 1.4.2 Web 窗体生命周期 16 1.4.3 ...

    《ASP.NET 4 权威指南》pdf版

    义服务器控件、ASP.NET 缓存、多语言本地化应用程序、ASP.NET Web 部件等。从深度上来讲,本书对 实际开发中极不常用而大部分同类书都浓墨重彩的知识点只做了必要性的介绍,对于较容易给开发者带 来困惑而大部分同类...

    ASP.NET教学讲义,完整章节

    1.3 ASP.NET 页的结构 11 1.4 Page事件(页面事件) 16 1.2.2 处理回送 20 1.2.3 ASP.NET应用程序示例 23 第二章:WEB服务器控件 26 2.1 WEB 服务器控件的格式 26 2.2 服务器控件的类型 27 2.3 用服务器控件建立页面...

    ASP.NET 课程WORD格式的

    WORD格式的ASP.NET课程,...第八讲 母版页及导航 第九讲 web部件 第十讲 ASP.NET状态管理 第十一讲 Web性能调优和跟踪检测 第十二讲 全球化和本地化 第十三讲Web安全性控制 第十四讲 个性化与主题 第十五讲 安装和部署

    ASP.NET4高级程序设计(第4版) 3/3

     《ASP.NET 4高级程序设计(第4版)》是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的建议。书中还深入讲述了其他ASP.NET图书...

    ASP.NET 3.5宝典

    第2部分介绍了ASP.NET 3.5的一些网站开发特性,包括母版页技术、主题皮肤技术、站点导航技术、数据源及数据绑定控件技术、个性化用户配置、Web部件技术、成员和角色管理技术,以及最新的LINQ查询技术。第3部分通过...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...

    《ASP.NET 2.0完全开发指南-基于VB》随书光盘

    目录 第1章 简介 第2章 VB.NET简介 第3章 标准控件 第4章 验证控件和数据的验证 第5章 SQL Server 2005、SQL语句和表的规范化 第6章 SqlDataSource、GridView和AccessDataSource ...第21章 主题、个性化配置和Web部件

    ASP.NET MVC 3高级编程

    《asp.net mvc 3高级编程》 第1章 入门 1 1.1 asp.net mvc简介 1 1.1.1 asp.net mvc如何适应asp.net 1 1.1.2 mvc模式简介 2 1.1.3 mvc在web框架中的应用 2 1.1.4 asp.net mvc 3的发展历程 3 1.1.5 razor视图...

    ASP.NET 2.0 Unleashed

    与此同时,作者几乎进行了完全的重写,以反映ASP.NET 2.0引入的所有新特性(包括超过50个的新控件、个性化、母版页和Web部件等内容)和几年来Web开发理念上的巨大变化。卷1是基础篇,主要讲述如何创建ASP.NET页面、...

    ASP.NET 2.0+SQL Server 2005全程指南-源代码

    12.1.3 Web部件基本控件 12.2 创建WebPart控件 12.2.1 WebPartManager控件 12.2.2 WebPart和WebPartZone控件简介 12.3 编辑WebPart控件 12.3.1 EditorZone控件简介 12.3.2 AppearanceEditorPart控件简介 ...

    ASP.NET 2.0开发技术大全光盘

    Web Part部件、母版页、主题、sQL语句在ASP.NET中的应用、高性能数据处理技术、ADO.NET数据库技术、数据绑定控件、ASP.NET数据缓存技术、站点导航和导航控件、Web用户控件、创建ASP.NET服务器控件、 WebService基础...

    ASP.NET+3.5完全自学手册c#电子教案

    第8章 ASP.NET中的样式,主题和母版页.ppt 第9章 ASP.NET中的站点导航技术.ppt 第10章 用户控件和绘图.ppt 第11章 ASP.NET AJAX开发技术.ppt 第12章 Web部件技术.ppt 第13章 ADO.NET数据访问技术.ppt 第14章 ASP.NET...

    [Microsoft.net.2.0.Framework.专业程序员指南].WROX-Professional_Web_Parts_and_Custom_Controls_with_ASP_dot_NET.2.0.pdf

    ASP.NET 2.0 Web部件与自定义控件开发

Global site tag (gtag.js) - Google Analytics