我有一个xulrunner应用程序,它使用浏览器组件来显示HTML内容。出于安全原因,我想限制该浏览器只能访问某个URL掩码。
我想将任何网络限制为仅限于内部网,例如“* .company.com”。但不仅是页面导航,XHR,CSS,脚本和所有网络
有没有人知道如何实现这个?我可以使用的任何XPCOM组件吗?
答案 0 :(得分:2)
最简单的方法是通过proxy auto-configuration file(假设您的应用程序实际上不需要使用代理)。因此,您可以将network.proxy.type
首选项设置为2(使用PAC文件),将network.proxy.autoconfig_url
设置为chrome://.../proxy.js
。 proxy.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
来阻止加载。