在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_headers和https://addons.mozilla.org/en-US/firefox/addon/thinkahead/中找到了http://thinkahead.mozdev.org/和<video>
。我是否更正可以使用它编写Firefox扩展?是否有这样的Firefox扩展?
我发现Chrome扩展程序的一些链接:
据我所知,从上面的列表中只有Firefox或Chrome扩展名是可行的。你有什么其他的建议?你有一些指示如何写或在哪里找到这样的扩展?
答案 0 :(得分:1)
我在https://developer.mozilla.org/en/Setting_HTTP_request_headers和https://addons.mozilla.org/en-US/firefox/addon/thinkahead/找到了http://thinkahead.mozdev.org/和thinkahead.js。我是否更正可以使用它编写Firefox扩展?是否有这样的Firefox扩展?
我是后者扩展的作者,但我还没有更新它以支持更新版本的Firefox。我最初的猜测是,是的,它会做你想做的事情:
myprivatewebpage
的所有页面,并执行类似将HTTP状态设置为403 Forbidden的操作。因此:myprivatewebpage
中的任何网页时,都会有正常行为。myprivatewebpage
以外的任何网页时,访问权限被拒绝。如果您想提前捕获错误的请求,而不是修改传入的标头,您可以修改传出的标头,可能会搞砸“If-Match”或“Accept”,以便永远不会接受请求。
此解决方案非常轻巧,但可能不足以满足您的需求。这取决于您要保护的内容:鉴于上述情况,客户端将无法看到被阻止的内容,但外部“被阻止”的主机可能仍会注意到已发送请求,并且可能能够从请求中收集信息URL。