Tags标签 网战地图
当前位置: 主页 > 网站建设 > silverlight教程 >

Silverlight安全性-保护您的Silverlight应用程序的安全(7)

2012-04-09 09:52 [silverlight教程] 来源于:
导读:保护您的 Silverlight XAP 文件的安全 担心 Silverlight 安全性的人常常会问:怎样才能保护我的 XAP 文件?有时候,这一疑问背后 的动机是为了保护代码内所含的知识产权。 在这种情况下,您需要进行模糊处理,以使

保护您的 Silverlight XAP 文件的安全

担心 Silverlight 安全性的人常常会问:“怎样才能保护我的 XAP 文件?”有时候,这一疑问背后 的动机是为了保护代码内所含的知识产权。 在这种情况下,您需要进行模糊处理,以使人更加难以理解 您的代码。

另一个常见的动机是为了防止恶意用户询问代码和了解 Silverlight 应用程序的工作原理,从而为他 们提供侵入您的服务的可能性。

我通常从以下两方面做出答复。 第一,尽管可以仅限经过身份验证并且获得授权的用户下载您的 Silverlight 应用程序(.xap 文件),但是没有任何理由相信这些用户所怀的恶意比未经过身份验证的 用户要少。 在应用程序已被下载到客户端之后,绝对没有办法再阻止用户询问代码,以试图提升其自己 的权限或将库转发给他人。 进行模糊处理可以使此过程稍微更加困难一些,却不足以确保您的应用程序 安全。

第二,任何可以通过您的 Silverlight 应用程序合法调用服务的人也可以直接调用这些服务(例如, 使用 Internet 浏览器和某些 JavaScript),记住这一点至关重要。 您根本无法阻止这一情况的发生, 因此将您的安全性工作的重点放在支持您的服务上极为重要。 正确执行此操作,即使恶意用户可以从您 的 Silverlight 应用程序的代码获得什么都无关紧要。 尽管如此,有些人仍希望确保只有经过身份验证 的用户才能访问其 .xap 文件。 这是可行的,但简便程度取决于您所使用的 IIS 的版本以及您选择的身 份验证方法。

如果您使用的是 Windows 身份验证,那么您可以使用 IIS 目录安全性轻松地保护您的 .xap 文件。 但如果您使用的是窗体身份验证,情况则会稍微复杂一些。 在这种情况下,要由 FormsAuthenticationModule 截获并验证任何请求附带的 Cookie,以及允许或拒绝访问请求的资源。

因为 FormsAuthenticationModule 是一个 ASP.NET 模块,因此请求必须通过 ASP.NET 管道传递,以 便执行此检查。 在 IIS6 (Windows Server 2003) 和先前的版本中,默认情况下,对 .xap 文件的请求 将不会通过 ASP.NET 传送。

尽管 IIS7 (Windows Server 2008) 引入了集成管道,其允许所有请求均通过 ASP.NET 管道传送。 如果您可以部署到 IIS7 并使用在集成管道模式下运行的应用程序池,则保护您的 .xap 文件安全的难度 仅相当于保护您的 .svc 文件的安全(如前面“ASP.NET 授权”部分所述)。 但是,如果您必须部署到 IIS6 或更早版本,您可能需要完成一些其他工作。

一种常用的方法涉及通过 ASP.NET 管道处理的另一个扩展流式处理组成您的 .xap 文件的字节。 典 型方式是通过 IHttpHandler 实现(在 .ashx 文件中)。

另一种方法是更改 IIS 的配置,以便通过 ASP.NET 管道发送 .xap 文件。 但是,由于这需要对您的 IIS 配置进行重大更改,因此前一种方法更常用。

使用窗体身份验证需要考虑的另一个问题是登录屏幕。 正如本文前面所建议,如果您选择使用 ASP.NET Web 窗体,则不存在任何问题。 但是,如果您希望在 Silverlight 中编写登录屏幕,您将需要 将应用程序拆分为几部分。 一部分(登录模块)应可用于未经身份验证的用户,另一部分(受保护的应 用程序)应仅可用于经过身份验证的用户。

您可以采用两种方法:

拥有两个单独的 Silverlight 应用程序。 第一个包含登录对话框且位于站点未受保护的区域。 成功 登录后,会重定向到指定站点受保护区域中的 .xap file 文件的页面。

将您的应用程序拆分为两个或多个模块。 位于站点未受保护区域中的初始 .xap 将执行身份验证过程 。 如果成功,该 .xap 文件随后将从受保护区域请求一个文件,该文件可动态加载到 Silverlight 应用 程序中。

(编辑:)

本文标签:
网友评论

栏目列表

推荐文章