目录
cookie + session
cookie会在每个请求的头部中携带,在http2之前会浪费带宽。可通过设置限制js访问。
会话
在浏览器退出后失效。可用于标记会话。
长期
在过期后失效,通过expire控制。可长期标记用户直至用户清除cookie或者网站数据。
localStorage + sessionStorage
发起请求时需要手动写入需要的信息,js可以任意访问。
sessionStorage
会话结束后会失效。
localStorage
可永久存储在用户浏览器。在用户清除localStorage或网站数据后失效。
http cache
浏览器会根据约定的策略缓存一些资源。比如图片,js, css等。
例如下面的例子,我们让用户浏览器缓存 js 全局变量visit_time=访问时间 30天。
header('cache-control: public');
header('content-type: application/javascript');
header('expires:'. gmdate('D, d M Y H:i:s', time()+60*60*24*30) . ' GMT');
header('date:'. gmdate('D, d M Y H:i:s', time()) . ' GMT');
header('etag: xxx');
$a = 'window.visit_time = '.time().';';
该方法隐蔽不易发现,缺点是容易被更新或清除。
- Ctrl+f5
- devtools 打开停用缓存
清除网站数据(并不会)
- 清除缓存图片或文件
- 等等
浏览器指纹
例如:分辨率 + 系统语言 + 时区 + canvas指纹 + 字体指纹 等
该模式优势是可以覆盖无痕模式。不过需要依赖所选指纹的区分度,并且计算指纹需要时间。未做具体实践,仅供参考
关于欧盟cookie
除非您进行某种形式的跟踪,否则大多数Cookie均不受该法律的约束。来自“欧盟互联网手册”:
根据欧盟数据保护咨询机构的明确规定,Cookies免征同意,包括:
用户输入Cookie(会话ID),例如第一方Cookie,用于在会话期间填充在线表单,购物车等时跟踪用户的输入,或者在某些情况下,持续性Cookie限于数小时
- 身份验证cookie,以在会话期间识别用户登录后的身份
- 以用户为中心的安全cookie,用于在有限的持续时间内检测身份验证滥用
- 多媒体内容播放器cookie,用于在会话期间存储技术数据以播放视频或音频内容
- 会话期间的负载平衡cookie
- 在会话期间(或更长时间)的用户界面自定义Cookie,例如语言或字体首选项
- 社交网络的已登录成员的第三方社交插件内容共享cookie。
这意味着您只需要为跟踪或第三方Cookie显示此类警报。
来源