限制xulrunner网络访问

时间:2011-10-01 16:10:19

标签: firefox xpcom xulrunner


我有一个xulrunner应用程序,它使用浏览器组件来显示HTML内容。出于安全原因,我想限制该浏览器只能访问某个URL掩码。
我想将任何网络限制为仅限于内部网,例如“* .company.com”。但不仅是页面导航,XHR,CSS,脚本和所有网络
有没有人知道如何实现这个?我可以使用的任何XPCOM组件吗?

1 个答案:

答案 0 :(得分:2)

最简单的方法是通过proxy auto-configuration file(假设您的应用程序实际上不需要使用代理)。因此,您可以将network.proxy.type首选项设置为2(使用PAC文件),将network.proxy.autoconfig_url设置为chrome://.../proxy.jsproxy.js的含义如下:

function FindProxyForURL(url, host)
{
    if (shExpMatch(host, "*.company.com"))
    {
        return "DIRECT";
    }
    return "SOCKS localhost:19191";
}

因此,对*.company.com的任何请求都不会使用代理,而对其他主机的请求将被定向到希望关闭的localhost端口 - 因此这些请求将不会成功。这当然是一个黑客攻击,但它足够简单并且在大多数情况下运行良好。

正确(但更复杂)的方法是使用content policies。您需要在XPCOM组件中实现nsIContentPolicy并在content-policy类别中注册该组件。这将确保为每个要加载的URL调用组件的shouldLoad()方法 - 您可以返回Ci.nsIContentPolicy.REJECT_REQUEST来阻止加载。