Ch02 Stateful Tracking 典型与意料之外的储存位置/Day7 Local Storage,IndexedDB,Cache
Local Storagecookie储存空间太小(4KB)成为致命伤>取代者为Storage
- Storage:1.同样是key-value pair,但可储存更多资料2.不会夹带在HTTP request中传给伺服器3.分为Local Storage长期储存和Session Storage网页关闭时会自动储存4.只能透过JavaScript操作5.无法达成cross-site tracking,因为JavaScript无法读到别的origin的Local Storage内容
IndexedDB1.同样是key-value pair,比Storage有更大的储存空间、支援非同步操作、可以储存二进位资料而非纯字串2.支援Transaction
Cache快取
-
为了减少重复请求的流量并加速操作,会把这些档案储存下来,下次遇到可以直接使用之前存好的东西
-
正如他有储存资料于浏览器内的技术,被用在Web tracking
-
Cache用于Web tracking的方法1.Document Cache:直接把identifier存在cache里,网站管理员在网页中插入一段script。伺服器随机生成identifier放在response body>Cache-Control: max-age=31536000(指定保留一年)>浏览器看到Cache-Control再将cache存取>使用者再次造访>浏览器直接回应cache中的资料2.HTTP 301 Permanent Redirection Cache:将identifier储存于redirection的资讯中,这往往更难发现。网站管理员在网页中插入一段script。伺服器随机生成identifier>回传301 Moved Permanently使用者再次造访>浏览器把redirection的纪录cache>JavaScript得到identifier>使用者再次造访>浏览器看到请求后发现之前cache已经永久重新导向到http://example.com/tracking/>浏览器须直接向其发出请求>JavaScript读到后得出identifier
301是永久重新导向,cache不会过期3.ETag如何知道cache是否过期>使用ETag(Entity Tag)辨识伺服器回传时夹带一个ETag>存进cache并注明ETag>下次使用时请求夹带的ETag If-None_Match: "123">伺服器检视是否为最新版本>回传304 Not Modified则可直接拿cache来使用/如果不是则回传心得ETag更新cacheETag的设定便是cookie的特徵,若把identifier放在ETag中,则可以达到Web tracking伺服器自动生成新的identifier ETag: "<identifier>">浏览器把资料ㄘㄨ资料存进cache并注明ETag是<identifier>>使用者存取资料时,浏览器糗球中夹带ETag If-None-Match:"<identifier>"ETag虽然没有像cookie持久,但可以促使浏览器把cache清空
三种有关cache的Web tracking方法都可以cross-site tracking
防御手段:
- cache partitioning1.让每个origin有自己的cache2.浏览器判断发现cache属于不同的orgin,只能重新请求资源增加流量3.可有效避免cross-site tracking
- cache verfication1.在使用被cache的资源前,先检查cache是否可能被用于web tracking,当重复请求时资料里的identifier的内容未改变,则不太可能被用于web tracking2.有效避免same-site tracking:请求新的资源被储存下来>标记为「尚未验证」>当浏览器重新请求相同资源时要重新请求,两次请求后内容一样则标记为「已验证」
资料来源、选用书籍:<Web Tracking的资安攻击与防御策略>铁人赛专用书