0

请告诉我,Silverlight 业务应用程序是否安全?

据我所知,用户可以从加载应用程序的本地计算机缓存中获取.xap文件,或者如果已知文件名和位置(它是用 HTML 代码编写的)直接获取 - 只需在浏览器的地址栏中键入它,文件就会是下载。(问题一:正常吗?或者,某些特定主机的设置可以拒绝直接下载?

最有趣的是 - 所以,一旦下载网页,用户在文件系统中有一个.xap文件。现在问题2:用户是否可以打开(我的意思是,反编译)这个xap文件,从而获得大量数据,包括检查用户的特定角色等等?在代码中,我定期检查特定角色中是否存在授权用户。取决于此,它可以由不同的内容提供。 ps当然,我知道服务器端通过属性检查角色,演讲不是关于这个。另外,我使用 MEF 模块化,并且,对于模块之间的通信,我使用了具有通信接口的全局库项目。模块之间传递的信息会被窃取吗?

下一个。包含一些应用程序设置的web.config文件还有一个包含登录密码信息的数据库连接字符串。还有问题3:web.config,存储这样的数据够安全吗?

最后一个问题——SSL 连接。我知道,我需要为此付费。无论如何,问题 4:它如何保护应用程序并包含数据(在业务应用程序中)?

4

1 回答 1

2

问题 1. 最终用户必须可以访问 xap 文件,因此我认为您不能阻止经过身份验证的用户从服务器获取它。即使它不可用,用户也可以在浏览器缓存中找到它。

问题 2a。是的,用户可以反编译 xap。它只是一个 zip 文件。重命名为 zip,提取内容,使用 Reflector 查看等。玩一下 Silverlight Spy,您还可以看到一些有趣的东西。您可以在您的程序集上使用混淆工具,这是一种有用的威慑,但即使这样也可以由拥有足够资源/精力的人反编译。

问题 2b。我认为可以看到“模块之间的信息传递”,因为可以使用 WinDbg 调试 Silverlight 应用程序。再一次,混淆至少有助于阻止随意的内省。

问题 3. 是的,web.config 应该是安全的,除非您不遗余力地公开它。

问题 4. SSL 不会阻止上面列出的 xap 文件的任何自省问题,但会阻止人们嗅探流量。您将遇到的唯一问题是如何减轻中间人攻击(代理在其自己的证书中替换)。有一些方法可以缓解这种情况,但我不知道最好的做法是什么。

根据您提出的问题,您应该减轻以下风险。想象一下,用户连接到您的 SL 应用程序,登录,然后您从服务器获取他们的“角色”。如果他们反编译了您的 xap,并发现他们需要以“管理员”角色开放对所有内容的访问,他们可以在 SL 应用程序和您的服务器之间放置一个代理并修改响应,以便 SL 应用程序认为他们处于“管理员”角色。这是一个中间人攻击,最终用户试图破解系统。即使您使用 SSL,这也是可能的,因为代理将使用自己的证书,并且最终用户可以将代理的证书添加到他们受信任的证书存储中。

我一直无法在客户端正确解决上述风险。我通过使用混淆,并在请求/响应中添加了一个自定义标头,这实际上是一个带有隐藏私钥的校验和来加密校验和,从而使黑客感到困难。但是,如果最终用户设法对 xap 进行反混淆/反编译,理论上他们将能够找到私钥并查看我的加密算法,因此能够在更改上述“角色”后替换为新的校验和例子。

总之,我得出的结论是不可能正确保护客户端。如果您认为风险足够大,最好在服务器上复制授权。

例如,如果要求用户必须是“admin”角色才能查看“customers”,那么如果用户是“admin”角色,我将在客户端显示“customers”屏幕。但是,在服务器上,当 SL 客户端调用服务来获取“客户”数据时,我还会检查当前经过身份验证的用户是否有权查看数据(而不是查看屏幕)。

于 2013-03-04T07:07:15.090 回答