Silverlight安全性-保护您的Silverlight应用程序的安全2011-10-23 MSDN Josh Twist作为一名 Microsoft 服务顾问,我定期与客户和合作伙伴一起进行应用程序安全性讨论。 在本文中 ,我将介绍一些在这些讨论中提出的主题。 特别是,我将重点介绍编程人员在尝试保护 Silverlight 应 用程序的安全时所面临的新挑战,而且我将考虑开发团队应该将其资源集中于哪些方面。本文提到了许多技术概念,您可以在其他位置(包括本杂志)找到这些概念的更多详细信息。 因此, 我就不在技术层面更加深入地讨论这些主题。 本文的目标是“理清头绪”并介绍如何利用这些概念保护 您的应用程序的安全。当规划应用程序的安全性时,考虑三个 A 非常有用:身份验证 (Authentication)、授权 (Authorization) 和审核 (Audit)。身份验证是确认用户身份的行为。 我们通常使用用户名和密码执行此操作。授权是指在进行身份验证之后,确认用户实际上具有执行特定操作或访问特定资源的适当权限的过程 。审核是维护活动记录,以便用户无法拒绝对系统执行的操作和请求的行为。在 Silverlight 应用程序上下文中,我将重点介绍前两项(身份验证和授权)。 由于这是一个富 Internet 应用程序 (RIA),因此本文中描述的大多数概念同样适用于异步 JavaScript 和 XML (AJAX) 或其他 RIA 方法。 我还将讨论如何防止对您的 Silverlight 应用程序文件进行不必要的访问。拓扑Silverlight 是一种跨浏览器插件,其利用 Windows Presentation Foundation (WPF) 率先采用的许 多图形概念,使 Web 开发人员能够创建丰富的用户体验,这些用户体验将超出仅使用 HTML 和 JavaScript 创建的体验。与 ASP.NET 不同的是,Silverlight 是一种客户端技术,它在用户的计算机上运行。 因此, Silverlight 开发无疑与 Windows 窗体或 WPF 有许多共同之处,而与 ASP.NET 的共同之处相对较少。 在许多方面,这是 Silverlight 的最大优势之一,因为它消除了 Web 应用程序的无状态性所导致的许多 问题。 不过,由于所有 UI 代码都是在客户端计算机上运行的,因此您不能再相信它。服务与 Windows 窗体不同的是,Silverlight 在浏览器沙盒内运行且拥有的功能减少,因此它所提供的安 全程度提高(尽管在 Silverlight 4 中,用户可以将某些应用程序标识为可信并将程序的权限提升为允 许 COM 互操作)。 正因为如此,Silverlight 不能直接连接到数据库,您必须创建一个可提供对您的数 据和业务逻辑的访问的服务层。例如,您通常会将这些服务承载于您的 Web 服务器上,就像使用 ASP.NET Web 窗体一样。 假定 Silverlight 代码运行于服务器与现实世界之间的信任边界的可信度较差的一侧(参见图 1),您的团队 的工作重点应始终是保护服务的安全。

图 1 Silverlight 运行于信任边界的可信度较差的一侧