iframe沙盒:禁用mailto和file://文件链接

时间:2015-05-18 12:19:33

标签: iframe sandbox mailto file-uri external-application

我已经创建了一个虚拟桌面页面,它将在kiosk模式下在浏览器(IE11或chrome)中运行,我想将结果放在大触摸屏显示器上,以便用户可以浏览内部网现场通过售货亭。

在该页面中,我还有一个iframe,显示我的域mycompany.com中的其他网站。

我正在尝试构建一个策略,允许iframe中显示的网站跟随href到其他网页但禁用mailto和文件链接(为了避免浏览器打开电子邮件客户端或文件管理器)。 当然,我无法更改iframe中显示的原始网站的代码,我知道由于相同的来源策略,我无法在容器页面中使用JS覆盖href。

有没有办法获得这个?

我在HTML5中找到了iframe标签的属性沙箱,但我不确定是否要使用它来完成任务。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

使用桌面应用,注册表编辑或区域策略来控制:

  

应用程序可以注册成为某个统一资源标识符(URI)方案名称的默认处理程序。桌面应用程序和Windows运行时应用程序都可以注册为URI方案名称的默认处理程序。如果用户选择您的应用程序作为URI方案名称的默认处理程序,则每次启动该类型的URI时都会激活您的应用程序。

     

默认情况下,当当前URL符合以下条件时,Internet Explorer会阻止使用“file:”协议导航到统一资源标识符(URI):

     

当前URL在Internet区域或“受限制的站点”区域中打开。      当前URL使用“file:”以外的协议。

     

对于邮件客户端,程序需要在HKEY_CLASSES_ROOT \ mailto密钥下注册设置,以便为使用mailto协议的URL提供服务。在以下键下设置镜像这些设置的值和键。

HKEY_LOCAL_MACHINE
   Software
      Clients
         Mail
            CanonicalName
               Protocols
                  mailto

RegisterProtocolHandler API适用于Chrome:

  

Chrome 13最终包含navigator.registerProtocolHandler。此API允许Web应用程序将自己注册为特定协议的可能处理程序。例如,用户可以选择您的应用程序来处理“mailto”链接。

注册协议方案,如:

 navigator.registerProtocolHandler(
'mailto', 'about:blank', 'Mail Protocol');
  

第一个参数是协议。第二个是应该处理此方案的应用程序的URL模式。该模式应包含'%s'作为数据的占位符,并且必须与尝试注册协议的应用程序位于同一源。用户批准访问后,您可以通过您的应用,其他网站等使用此链接

<强>参考