判断是否登录社交网站的一个有趣方法

还记得那个通过分析链接颜色来判断你是否访问过某些网站的技巧吗(现在 已经被 Firefox 修复)?如果你创建一些 HTML 元素,你的浏览器会泄露很多关于你的信息。

Mike Cardwell 发现了一种有趣的方法来检测你是否登录了社交网站。最简单的技巧是使用 Gmail。Mike 创建了一张照片并上传到 Google。如果你将这张图片添加到 HTML 文档中,并添加成功和失败情况的事件处理程序,你就可以检查访问者是否登录——因为当你登录时图片会被送达,而当你未登录时,Gmail 会返回一个 404 文档。

这在所有浏览器中都有效,例如可以用来直接发送 mailto: 链接到 Gmail。请注意,这只是检查你是否已登录,并不意味着你能够访问内容。

对于 Facebook 和 Twitter,这并不完全有效。相反,Mike 尝试使用 API 读取内容,并依赖于 404 响应中的错误。



这在 Internet Explorer 和 Opera 中无法正常工作,但在其他浏览器中仍然有效。在 Firefox 中,你可以使用 Request Policy 插件来解决这个问题。

看看哪些其他的社交网站可以通过简单的 onload 和 onerror 处理程序来检测到,这会很有趣。你还有其他发现吗?

关于 Chris Heilmann

HTML5 和开放网络的福音传道者。让我们一起解决问题!

更多来自 Chris Heilmann 的文章…


14 条评论

  1. Jan!

    你可以将图片上传到 Bugzilla 中的安全敏感漏洞,以检查用户是否已登录为安全组成员,但随着时间的推移,安全位被取消后,这将不再适用。

    2011 年 2 月 4 日 上午 01:20

  2. Paul Rouget

    这听起来像是重要的隐私问题。

    这是 Robert O’Callahan 描述的“可嵌入”与“可读”混淆的结果:http://weblogs.mozillazine.org/roc/archives/2011/02/distinguishing.html

    2011 年 2 月 4 日 上午 01:42

  3. Jan!

    解决此问题的方法是,在每个动态 URL 中使用一个 token,并在 token 丢失时始终返回 403(或类似的错误代码),无论登录状态如何,对吗?

    2011 年 2 月 4 日 上午 01:50

  4. Chris Heilmann

    好吧,这是你不应该允许人们链接第三方图片的原因之一,而是应该将图片上传到你的服务器,并使用 GD 或类似工具对其进行调整大小,以确保它们是有效的图片。

    2011 年 2 月 4 日 上午 02:08

  5. Thanasis Polychronakis

    对于 Gmail,这个脚本似乎只能判断 Mike 是否登录,但仅限于 Mike 本人…

    Mike 上传了图片,他有权访问它,我们检查 Mike 的图片是否可访问…

    那么如何才能将它应用于所有 Gmail 用户呢?

    2011 年 2 月 4 日 上午 03:50

  6. Giorgio Maone

    你也可以通过一个简单的 ABE 规则来打破它。

    # 这将导致第三方嵌入请求在没有 cookies、
    # URL 中的会话 ID 或其他授权 token 的情况下发送。
    站点 *
    接受来自 SELF++
    匿名化 INCLUSION

    2011 年 2 月 4 日 上午 10:02

  7. Stormy

    我认为这是一个重大的隐私问题。

    我不希望网页知道我是否登录了其他服务,除非我明确授权。

    感觉像是网页在假冒我访问该服务。

    我们该如何堵住这个漏洞,或者让用户更明确地了解情况?

    2011 年 2 月 4 日 上午 10:32

  8. WulfTheSaxon

    在“选项”→“隐私”中禁用第三方 cookies 可以完全阻止这种情况。

    2011 年 2 月 4 日 上午 11:22

  9. Giorgio Maone

    @WulfTheSaxon
    HTTP 身份验证呢?

    2011 年 2 月 4 日 上午 11:25

  10. Paul Rouget

    From-origin: … 标头呢?

    http://annevankesteren.nl/2011/02/from-origin

    2011 年 2 月 4 日 上午 11:47

  11. Pierre

    @Thanasis
    不。当我登录 Gmail 时,我可以看到图片,而我不是 Mike。
    我刚尝试打开一个隐身窗口,现在我看不到它了。


    Pierre

    2011 年 2 月 5 日 上午 06:01

  12. nemo

    Giorgio Maone,这些网站中是否有任何网站使用 HTTP 身份验证?

    2011 年 2 月 5 日 下午 04:03

  13. Joss Crowcroft

    这是一场很棒的讨论,但感觉有点“亡羊补牢”——对我来说,重要的是,并非网站能够知道其“匿名”用户登录了哪些服务,而是有数亿用户始终保持登录状态(包括我自己!…)。

    2011 年 2 月 6 日 上午 08:11

  14. dazbo100

    我的网站 http://www.facebookfanssite.com 的富内容也遇到了同样的问题,现在有很多问题,就像其他网站一样,但我毕竟是人,不完美,哈哈,我的网站和其他网站一样,还需要做很多工作,就像 Mozilla 一样。
    抱歉,有点跑题了……

    2011 年 3 月 15 日 下午 01:02

本文的评论已关闭。