这会保护我免受Etag追踪吗?

 karenwang05 发布于 2023-02-13 13:16

背景:ETag跟踪在这里得到了很好的解释,也在维基百科上提到过.

我在回答"如何阻止ETag跟踪?" 的回答中写道.让我写这个问题.

我有一个浏览器端解决方案,可以防止ETag跟踪.它无需修改当前的HTTP协议即可运行.这是ETag跟踪的可行解决方案吗?

我们没有告诉服务器我们的ETag,而是向服务器询问其ETag,我们将它与我们已经拥有的ETag进行比较.

伪代码:

If (file_not_in_cache)
{
    page=http_get_request();     
    page.display();
    page.put_in_cache();
}
else
{
    page=load_from_cache();
    client_etag=page.extract_etag();
    server_etag=http_HEAD_request().extract_etag();

    //Instead of saying "my etag is xyz",
    //the client says: "what is YOUR etag, server?"

    if (server_etag==client_etag)
    {
        page.display();
    }
    else
    {
        page.remove_from_cache();
        page=http_get_request();     
        page.display();
        page.put_in_cache();
    }
}

我的解决方案的HTTP会话示例:

客户:

HEAD /posts/46328
host: security.stackexchange.com

服务器:

HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
ETag: "EVIl_UNIQUE_TRACKING_ETAG"
Content-Type: text/html
Content-Length: 131

案例1,客户有一个相同的ETag:

Connection closes, client loads page from cache.

案例2,客户端有不匹配的ETag:

GET...... //and a normal http conversation begins.

需要修改HTTP规范的额外内容

将以下内容视为理论材料,HTTP规范可能不会很快改变.

1.删​​除HEAD开销

值得注意的是,存在较小的开销,服务器必须两次发送HTTP头:一次响应HEAD,一次响应GET.一个理论上的解决方法是修改HTTP协议并添加一个请求无标头内容的新方法.然后,客户端将仅请求HEAD,之后仅请求内容,如果ETags不匹配.

2.防止基于缓存的跟踪(或至少使其更难)

虽然Sneftel建议的解决方法不是ETag跟踪技术,但即使他们使用我建议的"HEAD,GET"序列,它也能跟踪人们.解决方案是限制ETag的可能值:ETag必须是内容的校验和,而不是任何序列.客户端对此进行检查,如果校验和值与服务器发送的值不匹配,则不使用缓存.

旁注:修复2还将消除以下Evercookie跟踪技术:pngData,etagData,cacheData.将其与Chrome的"仅保留本地数据直到我退出浏览器"相结合,消除了除Flash和Silverlight cookie之外的所有evercookie跟踪技术.

1 个回答
  • 这听起来很合理,但存在变通方法.假设首页总是被赋予相同的etag(以便返回的访问者总是从缓存中加载它),但是每次加载时页面本身都会引用一个命名不同的图像.然后,您对此图像的GET或HEAD请求将唯一标识您.可以说这不是基于etag的攻击,但它仍然使用你的缓存识别你.

    2023-02-13 13:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有