2014-01-14 71 views
3

当我通过几个类似的问题在一旁看着左右,但还没有发现的东西很喜欢我的需要,增加了安全性,所以我的问题是这样的:使用web浏览器

我想采取截图(缩略图)在用户提供一个URL之后的URL。我打算使用Awesomium,因为它们为screengrabs提供了一个相当简单的解决方案。不幸的是,Awesomium不能在x64应用程序中编译,因为我正在用ASP.NET Azure构建这个版本,所以我无法切换到x86。

因此,我剩下一个不太优雅的解决方案,使用Windows.Forms WebBrowser加载URL并截取屏幕截图(如下所示:http://www.codeproject.com/Articles/95439/Get-ASP-NET-C-2-0-Website-Thumbnail-Screenshot)。

丑陋,我知道,但它适用于大多数网页(偶尔有白色截图),但现在我关心的是安全性。

如果用户输入恶意URL并且WebBrowser加载它,那么阻止它运行有害代码并将病毒下载到托管应用程序的服务器是什么?

虽然有不同的方法,但有几个服务和网站提供了类似的功能,但核心思想是一样的:网站必须打开URL并呈现页面才能截取屏幕截图。那么,人们期望他们采取什么样的措施来阻止病毒和恶意URL?

回答

1

对您的应用程序的最大威胁是客户端脚本在您的浏览器控件(即JavaScript和客户端VBScript)中执行。这似乎是不可能禁用JavaScript的编程方式WebBrowser对象:

剥离<script>标签的第一个问题的first answer是不是要对安全的方式,因为有很多脚本可以插入的其他方法。

更改window.alertsecond answer将无法​​正常工作,因为它需要页面先完全加载,并且脚本可能在此之前执行。而且,这只会阻止alert函数,并且不会以任何其他方式阻止脚本代码。

按照此答案中的建议更改注册表设置可能是要走的路,但这似乎与将Internet Explorer设置更改为Internet区域的高安全性(或选择自定义和禁用活动脚本)相同。如果您始终控制装载应用程序的计算机,那么在Internet Explorer选项中手动禁用脚本可能是一个可行的解决方案。

大多数客户端互联网威胁,例如路过式下载都涉及脚本,因此这种方法将大大地保护您的应用程序。

但是,还有其他一些漏洞,例如Windows Metafile vulnerability可能会损害客户端计算机。

在自动打开WMF文件的网络浏览器中查看网站,在这种情况下,可能会自动下载并打开任何潜在的恶意代码。 Internet Explorer是自1996年以来适用于所有Microsoft Windows版本的默认Web浏览器,它是这样做的。

但是,确保您的计算机使用最新的Windows更新进行修补,可以确保您免受类似威胁的侵害。这将使zero-day attacks针对Internet Explorer或WebBrowser对象,您不能做太多的事情。我建议在隔离的机器(或VM)上运行你的应用程序,然后该应用程序会将屏幕截图上传到另一台服务器(例如通过网络),这将有助于缓解这种情况下的威胁。

+0

“在隔离的机器(或虚拟机)上运行你的应用程序,然后将截图上传到另一台服务器(例如通过网络)” - 这是一个奇妙的建议。在阅读您的评论之后,似乎值得花费一个网站截图API来避免这些漏洞 - 零日攻击总是一个问题。 – drewness