如何在Silverlight中验证主机服务器的证书?

问题描述:

我正在写我正在写的Silverlight应用程序中的MITM攻击。该网站将通过SSL运行。据我所知,如果我的网站是MITM攻击的受害者,我现在唯一的防御就是浏览器在网站证书不可信时显示的警告页面。由于它只是一个浏览器,它能做的最好的只是警告用户,然后让他们通过。用户可以点击快乐,并且倾向于不读取事物。因此,他们很可能会阅读此警告,搔头,并继续前往该网站。我的想法是,自从我编写一个强大的Silverlight应用程序以来,我应该能够检测浏览器是否看到证书错误,或者执行与浏览器执行相同的验证。然后,如果我确定存在问题,我可以简单地锁定我的整个应用程序,以便用户不会向MITM公开任何重要信息。我遇到的问题是,我似乎无法在Silverlight的.NET有限子集中找到正确的类来完成我需要做的事情。有谁知道我可以如何实现这个目标,或者以不同的方式解决这个问题?如何在Silverlight中验证主机服务器的证书?

据我所知,这是不可能的 - Silverlight使用浏览器的网络堆栈,结果依赖于它的网络警告和安全基础设施。

Silverlight 3添加了一个新的网络堆栈,但我相信一般情况下也是这样:当您的主机服务器的证书在浏览器下载.xap(Silverlight应用程序)时进行验证,而不是您可以检查或交互的东西在代码中。

+0

好吧,所以我在浏览器验证的摆布。你有没有看到使用另一种技术基本实现相同目标(防止MITM)的方法? – Hydroslide 2009-08-21 14:43:36

恕我直言,你可以检查本地存储的证书,因为浏览器会在SSL请求后保存它的副本。 查看this文章。我希望它会给你一些提示

+0

此答案不适用于Silverlight,因为引用的文章适用于完整的.NET框架; Silverlight的沙盒排除了这种访问。 – 2009-08-18 05:36:46