背景知识
现代浏览器提供了各种各样的功能来改善和简化用户体验。其中一个特性就是所谓的favicon:favicon是一个小的(通常是16×16或32×32像素)logo,由web浏览器使用,以可识别的方式标记网站。多数浏览器通常在地址栏和书签列表中的页面名称旁边显示favicon。

为了在他们的网站上提供favicon,开发者必须在网页的标题中包含一个属性。如果此标记确实存在,则浏览器会从预定义源请求图标,如果服务器响应包含可以正确呈现的有效图标文件,则浏览器会显示此图标。在任何其他情况下,都会显示一个空白的favicon。

favicon文件对于浏览器来说,必须是可以很容易访问到的。因此,它们被缓存在系统上一个单独的本地数据库中,称为favicon缓存(F-cache)。F-Cache数据项包括访问的URL(子域、域、路由、URL参数)、favicon ID和生存时间(TTL)。虽然这为Web开发人员提供了使用各种各样的图标来描绘其网站的各个部分的能力,但是它也导致了一种可能的跟踪场景。

当用户访问某个网站时,浏览器通过查找所请求网页的快捷图标链接引用的源来检查是否需要favicon。浏览器初始检查本地F-Cache中是否有包含活动网站URL的条目。如果favicon条目存在,图标将从缓存加载,然后显示。但是,如果没有条目,例如,因为此特定域下从未加载favicon,或者缓存中的数据已过期,则浏览器会向服务器发出GET请求,以加载站点的favicon。

威胁模型
本文将介绍一种可能的威胁模型,该模型允许为每个浏览器分配一个唯一的标识符,以便得出关于用户的结论,并且即使在应用了反指纹措施的情况下也能够识别该用户,例如使用VPN、删除Cookie、删除浏览器缓存或操纵客户端标题信息等等。

一台Web服务器可以判断是否已经加载了favicon,因此当浏览器请求网页时,如果favicon不在本地F-cache中,则会对favicon发出另一个请求。如果该图标已存在于F-Cache中,则不发送进一步的请求。通过组合浏览器特定URL路径的已传递和未传递favicon的状态,可以为客户端分配唯一的模式(标识号)。当网站重新加载时,Web服务器就可以根据客户端发送的favicon丢失请求来重建标识号,从而识别浏览器。

支持该攻击场景的浏览器如下(包含移动端浏览器):

关于Supercookie
Supercookie可以使用favicon来给网站的访问者分配唯一的标识符。跟传统的用户追踪技术不同,这种ID标识符几乎是可以永久存储的,而且用户无法轻易删除或修改。
值得一提的是,这种跟踪技术即使是浏览器处于匿名模式下也是可以正常工作的,而且无法通过刷新缓存、关闭浏览器、重新启动系统、使用VPN或安装AdBlockers来清除。

工具安装
Docker
要求:Docker守护进程
首先,我们需要使用下列命令将该项目源码克隆至本地:
git clone https://github.com/jonasstrehle/supercookie
接下来,更新supercookie/server/.env中的.env文件:
HOST_MAIN=yourdomain.com #or localhost:10080
PORT_MAIN=10080
HOST_DEMO=demo.yourdomain.com #or localhost:10081
PORT_DEMO=10081
现在,使用下列命令运行容器:
cd supercookie/server
docker-compose up
此时,我们的Web服务器就已经在运行了。(https://yourdomain.com)

本地设备安装
要求:Node.js
首先,我们需要使用下列命令将该项目源码克隆至本地:
git clone https://github.com/jonasstrehle/supercookie
接下来,更新supercookie/server/.env中的.env文件:
HOST_MAIN=localhost:10080
PORT_MAIN=10080
HOST_DEMO=localhost:10081
PORT_DEMO=10081
现在,使用下列命令运行服务:
cd supercookie/server
node main.js
此时,我们的Web服务器就已经在运行了。(http://localhost:10080)

项目地址
Supercookie:https://github.com/jonasstrehle/supercookie/

通过图标来识别网站用户指纹相关推荐

  1. python指纹识别_分享Python编写的网站组件指纹扫描工具.

    这是一个使用Python语言编写的开源网站组件指纹扫描工具,该工具运行在Python2.73环境下,Windows平台,它支持如下功能: 1.自动提取互联网URL,根据GoDumpDomainSele ...

  2. 什么是浏览器指纹识别?浏览器指纹识别如何预防

    当我们访问网站时,网站会使用一些特殊脚本收集我们的信息(如浏览器版本,时区,默认语言等),这就是浏览器指纹识别.浏览器指纹识别可以帮助网站准确地识别出用户.本文将简单介绍一下浏览器指纹识别的工作原理以 ...

  3. 实战技术:提升网站用户体验—WebP 图片的高效使用

    个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 一.WebP 的由来 现代图像压缩技术对我们的生活方式影响很大.数码相机能将上千张高质量图片存储到一张内存卡里.智能手机可以与邻近设 ...

  4. 视频图像处理平台对比_情绪管理考勤机人脸识别原理与指纹识别性能对比-微幼科技...

    随着AI人工智能技术发展越来越成熟,生物识别技术也越来越成熟.包括指纹识别.眼纹识别.虹膜识别.视网膜识别.声纹识别和人脸识别等,这些识别方式一般用于确认身份信息.考勤和支付等.那么,情绪管理考勤机人 ...

  5. 网站用户的生命周期价值

    转载自:http://www.itongji.cn/article/111429242013.html 什么是网站用户的生命周期价值(Lifetime Value,简称LTV),及为什么要使用LTV这 ...

  6. 如何快速提高网站用户体验之3大绝招:快、准、狠

    流量的重要性,相信大家都明白!网上也有成千上万的教程,引导大家如何做好网站的引流工作,可是我们最终的目的不只是将用户引导进来而已,更重要的是怎么留住用户,才是我们引流的目的.因此,大家在引流时千万不要 ...

  7. 指纹识别综述(7): 指纹合成

    指纹识别综述系列 1.导论:2.指纹传感器:3.特征提取:4.匹配:5.分类与检索:6.现场指纹识别: 7.指纹合成: 8.唯一性: 9.指纹系统安全:10.深度学习方法:11.专利. 本文主要基于& ...

  8. 电子商务网站用户行为分析及服务推荐

    一.背景介绍 1.问题描述    本文主要研究对象是某家法律网站,这是家电子商务类大型法律资讯网站,致力为用户提供丰富的法律信息与专业咨询服务,也为律师与律所提供有效的互联网整合营销解决方案,访问量剧 ...

  9. 计算机用户身份识别,计算机用户身份识别装置及使用方法与流程

    本发明涉及用户身份验证技术领域,是一种计算机用户身份识别装置及使用方法. 背景技术: 随着计算机技术的不断发展,信息安全已成为计算机用户普遍关注的焦点,传统方法仅仅只是对密码内容进行确认,传统密码方式 ...

  10. 大数据课程综合实验案例:网站用户行为分析

    大数据课程综合实验案例 1 案例简介 1.1 案例目的 1.2 适用对象 1.3 时间安排 1.4 预备知识 1.5 硬件要求 1.6 软件工具 1.7 数据集 1.8 案例任务 1.9 实验步骤 2 ...

最新文章

  1. python3.0安卓版-qPython 3h下载
  2. 服务器策略文件,如何解决服务器对文件请求的缓存策略教程
  3. SAP在快速消费品行业中的实施方案
  4. 使用cmake重写live555工程-附源码和视频教程
  5. 三星I9000挖煤模式和R模式进入方法
  6. HDU 5238 Calculator 线段树 中国剩余定理
  7. 数据算法之二叉树平衡(BinTreeNode Rotate)的Java实现
  8. 一文足以了解什么是 Java 中的锁
  9. OpenCV-腐蚀cv::erode
  10. Java中取某一个范围的随机数
  11. 六石管理学:谈管理的前提,要有一点的胸量
  12. 51 nod 最长公共子序列问题(打印路径)
  13. mysql 2000安装教程_Win10 64位安装个人版SQL2000图文教程
  14. 计算机通过华为手机上网,华为手机usb共享电脑的网络怎么办
  15. 微信小程序参数二维码生成朋友圈分享图片
  16. java计算机毕业设计学术会议信息网站源码+mysql数据库+lw文档+系统+调试部署
  17. 2018-8-10-控件
  18. 华为Datacom认证介绍
  19. 英语学(xiao 二声)习__字母读音
  20. 【它山之玉】研究生回复审稿意见的门道---科学网马臻

热门文章

  1. 交换机的源地址学习机制和帧转发方式习题
  2. ThinkPHP完美实现分页和美化
  3. 服务器操作系统使用相关要求,服务器操作系统使用相关要求
  4. win7工作组无法查看计算机名,win7系统无法查看工作组计算机怎么解决
  5. linux fdisk运用
  6. Train Problem I(STL)基本运用stack
  7. java 应用编程接口_java 应用程序接口(api)是什么
  8. java上下文的作用_Spring中的应用程序上下文有什么作用? - java
  9. c++如何快速写出get set_如何快速写出产品文案?(4大核心方法)
  10. pyppeteer-比 selenium 更高效的爬虫利器