CSS已访问链接的隐私保护

摘抄自:《CSS权威指南 第四版》

有超过十年的时间,已访问的链接可以使用任何可用的CSS属性装饰,与未访问链接没有差别。

然而,大约在2005年,有几个人通过示例揭露,通过视觉样式和简单的DOM脚本就可以判断用户是否访问过特定页面。例如,对:visited{ font-weight: bold; }规则来说,脚本可以找出所有加粗的链接,告诉用户他们访问过哪些网站。更槽糕的是,已访问的网站可能会被服务器偷偷收集。不使用脚本的话,还可以通过背景图像达到相同的效果。

对你来说这可能不是什么严重的问题,但在有些国家,访问某些网站(反对党、未经批准的宗教组织、邪教或腐败网站等)可能招致牢狱之灾。钓鱼网站还可以利用这一点查出用户访问过哪些重要资源。

鉴于此,相关方采取了两个措施:

  1. 首先,只能把颜色相关的属性应用到已访问的链接上,包括:colorbackground-colorcolumn-rule-coloroutline-colorborder-color,以及各边的边框颜色属性(例如:border-top-color)。除此之外的属性将被忽略。此外,:link定义的样式除了应用到未访问的链接上之外,也会应用到已访问的链接上,因此:link装饰所有超链接 ,而不只是装饰所有未访问的超链接
  2. 其次,如果通过DOM查询已访问链接的样式,返回的值跟未访问时一样。因此,如果把已访问链接的颜色设为紫色,未访问链接的颜色设为蓝色,那么通过DOM查询颜色时,返回的是蓝色,而不是紫色。

2017年年未起,这一行为在所有浏览模式中都应用了,而不仅限于隐私浏览模式。

尽管只能使用有限的CSS属性区分已访问链接和未访问链接,但是为了可用性和可访问性,我们还是要充分利用有限的属性把已访问的链接和未访问的链接区分开。

相关推荐
BJ-Giser4 分钟前
Cesium 基于EZ-Tree的植被效果
前端·可视化·cesium
王码码20351 小时前
Flutter for OpenHarmony:Flutter 三方库 algoliasearch 毫秒级云端搜索体验(云原生搜索引擎)
android·前端·git·flutter·搜索引擎·云原生·harmonyos
发现一只大呆瓜1 小时前
深入浅出 AST:解密 Vite、Babel编译的底层“黑盒”
前端·面试·vite
天天鸭1 小时前
前端仔写了个 AI Agent,才发现大模型只干了 10% 的活
前端·python·ai编程
发现一只大呆瓜2 小时前
前端模块化:CommonJS、AMD、ES Module三大规范全解析
前端·面试·vite
IT_陈寒2 小时前
一文搞懂JavaScript的核心概念
前端·人工智能·后端
IT_陈寒2 小时前
Java开发者必看!5个提升开发效率的隐藏技巧,你用过几个?
前端·人工智能·后端
前端Hardy2 小时前
Wails v3 正式发布:用 Go 写桌面应用,体积仅 12MB,性能飙升 40%!
前端·javascript·go
Laurence2 小时前
Qt 前后端通信(QWebChannel Js / C++ 互操作):原理、示例、步骤解说
前端·javascript·c++·后端·交互·qwebchannel·互操作
Pu_Nine_92 小时前
JavaScript 字符串与数组核心方法详解
前端·javascript·ecmascript