我有一个使用浏览器组件显示HTML内容的xulrunner应用程序。出于安全原因,我想限制浏览器只能访问某个url掩码。
我想把所有的网络都限制在intranet上,比如"*.company.com“。但不仅仅是页面导航,XHR,CSS,脚本和所有的网络。
有谁知道如何实现这一点吗?有没有我可以使用的XPCOM组件?
发布于 2011-10-03 18:34:22
最简单的方法是通过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的请求都不会使用代理,而对其他主机的请求将被定向到一个本地主机端口,该端口希望是关闭的-因此这些请求将不会成功。这当然是一种技巧,但它足够简单,并且在大多数情况下都能很好地工作。
正确的(但更复杂的)方法是使用content policies。您需要在XPCOM组件中实现nsIContentPolicy,并在content-policy类别中注册该组件。这将确保每个要加载的URL都会调用组件的shouldLoad()方法--您可以返回Ci.nsIContentPolicy.REJECT_REQUEST来阻止加载。
https://stackoverflow.com/questions/7621382
复制相似问题