Firefox或Chrome插件可阻止和过滤所有传出连接

时间:2011-04-29 13:27:04

标签: security sanitization same-origin-policy restriction

在Firefox或Chrome中,我想阻止私人网页建立传出连接,即如果网址在浏览器标签中以http://myprivatewebpage/https://myprivatewebpage/开头,则该浏览器标签必须为限制,以便允许仅从http://myprivatewebpage/https://myprivatewebpage/加载图像,CSS,字体,JavaScript,XmlHttpRequest,Java小程序,Flash动画和所有其他资源,即<img src="http://www.google.com/images/logos/ps_logo.png">(或相应的<script>new Image(...)一定无法加载该图片,因为它不在 myprivatewebpage 上。我需要一个100%且万无一失的解决方案:甚至不是 myprivatewebpage之外的单一资源可以访问,即使概率很低。除 myprivatewebpage 之外的网页上必须没有资源加载限制,例如http://otherwebpage/必须能够从 google加载图像.COM

请注意,我认为 myprivatewebpage 的用户愿意合作以保持网页的私密性,除非它对他们来说太多了。例如,他们很乐意安装一次Chrome或Firefox扩展程序,如果他们看到一条错误消息,指出访问被拒绝 myprivatewebpage ,他们就不会被冒犯,直到他们在支持浏览器。

我之所以需要此限制,是为了让 myprivatewebpage 保持私密,而不向其他网页的网站管理员公开有关其使用的任何信息。如果允许http://www.google.com/images/logos/ps_logo.png,那么 myprivatewebpage 的使用将记录在Google的ps_logo.png的access.log中,因此Google的网站管理员会了解 myprivatewebpage <的信息使用/ em>,我不希望这样。 (在这个问题中,我对限制是否合理不感兴趣,但我只对技术解决方案及其优缺点感兴趣。)

我的想法如何实施限制:

  • 不要施加任何限制,只需依靠same origin policy。 (这不提供必要的保护,相同的原始政策允许所有图像通过。)

  • 更改服务器上的Web应用程序,以便生成HTML,JavaScript,Java小程序,Flash动画等,从不尝试在 myprivatewebpage 之外加载任何内容。 (在复杂的Web应用程序中,这几乎是难以万无一失的,特别是对于用户生成的内容。)

  • 使用服务器上的HTML输出过滤器对网页进行过度清理,即删除所有<script><embed><object>标记,限制目标{{1 }},<img src=<link rel=等,并限制CSS文件中的链接。 (如果我能够正确记住所有HTML标签,这可以防止所有不需要的资源,例如我不能忘记<form action=。但这太限制了:它删除了所有的动态网页功能,如JavaScript,Java小程序和Flash动画;没有这些,大多数Web应用程序都是无用的。)

  • 清理网页,即在网络服务器中添加一个HTML输出过滤器,从生成的HTML中删除所有违规的网址。 (这不是万无一失的,因为可能有一个棘手的JavaScript会生成一个不允许的URL。它也不能防止Java applet和flash动画加载的URL。)

  • 安装HTTP代理,根据URL和HTTP Referer阻止请求,并强制所有浏览器流量(包括 myprivatewebpage otherwebpage google.com )通过该HTTP代理。 (这会减慢到 myprivatewebpage 以外的流量,如果XmlHttpRequest(),Java applet或flash动画可以伪造HTTP Referer,它可能无法正常保护。)

  • 查找或编写Firefox或Chrome扩展程序,拦截所有传出连接,并根据选项卡的URL和连接的目标网址阻止它们。我在https://developer.mozilla.org/en/Setting_HTTP_request_headershttps://addons.mozilla.org/en-US/firefox/addon/thinkahead/中找到了http://thinkahead.mozdev.org/<video>。我是否更正可以使用它编写Firefox扩展?是否有这样的Firefox扩展?

我发现Chrome扩展程序的一些链接:

据我所知,从上面的列表中只有Firefox或Chrome扩展名是可行的。你有什么其他的建议?你有一些指示如何写或在哪里找到这样的扩展?

1 个答案:

答案 0 :(得分:1)

  

我在https://developer.mozilla.org/en/Setting_HTTP_request_headershttps://addons.mozilla.org/en-US/firefox/addon/thinkahead/找到了http://thinkahead.mozdev.org/和thinkahead.js。我是否更正可以使用它编写Firefox扩展?是否有这样的Firefox扩展?

我是后者扩展的作者,但我还没有更新它以支持更新版本的Firefox。我最初的猜测是,是的,它会做你想做的事情:

  1. 用户无需插件即可访问您的网页。网页包含可向服务器发送简单版本标头的ThinkAhead块,但由于未安装插件,因此会被忽略。
  2. 由于服务器没有看到该标头,它会将客户端重定向到安装插件的页面。
  3. 用户安装插件。
  4. 用户使用插件访问网页。页面将版本标头发送到服务器,因此服务器允许访问。
  5. ThinkAhead块匹配 myprivatewebpage的所有页面,并执行类似将HTTP状态设置为403 Forbidden的操作。因此:
  6. 当用户访问myprivatewebpage中的任何网页时,都会有正常行为。
  7. 当用户访问myprivatewebpage以外的任何网页时,访问权限被拒绝。
  8. 如果您想提前捕获错误的请求,而不是修改传入的标头,您可以修改传出的标头,可能会搞砸“If-Match”或“Accept”,以便永远不会接受请求。

    此解决方案非常轻巧,但可能不足以满足您的需求。这取决于您要保护的内容:鉴于上述情况,客户端将无法看到被阻止的内容,但外部“被阻止”的主机可能仍会注意到已发送请求,并且可能能够从请求中收集信息URL。