文章插图

文章插图
CSS代码实现用户跟踪及反跟踪方法
跟踪原理
这个方法利用了CSS的两个特性:将内容注入HTML元素的能力(操纵DOM),以及在用户执行操作后更改样式的能力(渲染页面) 。该网站的工作原理是使用content属性在执行操作时设置URL 。URL调用一个PHP脚本,该脚本记录有关操作的详细信息,这些操作将作为URL参数传递 。使用:: before和:: after CSS选择器设置此URL可确保仅在执行操作时调用URL,而不是在首次加载页面时调用URL 。
例如,以下CSS在每次单击#link元素时调用URL:
以下是这样一个脚本的PHP示例:
用户可以设置浏览器的User-agent来欺骗服务器,[email protected] at-rule测试特定于浏览器的CSS属性来规避它 。例如,以下操作通过检测-webkit-appearance可用,以及-ms-ime-align不可用,来检测是否为Chrome浏览器:
为了正确检测用户操作系统,在这个跟踪中动用了字体检测 。例如,通过检测浏览器是否支持Calibri字体系列,就可以判断浏览器是不是在Windows中运行:
在浏览器中很难防止这种攻击 。可以借助一个跨站注入漏洞来完美实现信息窃取,还非常难于发现 。如果想要完全避免这种攻击,除非禁用CSS,但是这样一来网站也就挂掉了 。虽然无法完全杜绝攻击,但是我们可以使用内容安全策略(CSP)增加其利用的难度 。
CSP是一组规则,用于确定浏览器可以执行和不执行的操作 。CSP通常用于防止跨浏览器加载不受信任的脚本导致的跨站点脚本(XSS)和其他攻击 。虽然通常与JavaScript文件一起使用,但CSP也可以应用于CSS样式表 。
我们假设由第三方提供商托管的样式表的网站,攻击者危及样式表并将用户跟踪添加到页面上的链接如下:
禁用内联样式
禁用内联样式是CSP提供的最大安全优势之一 。内联样式是直接在HTML文档中声明(或通过JavaScript设置)的样式,而不是从样式表中加载的样式 。内联样式,尤其是动态生成的样式或用户创建的样式,非常难以调试和保护 。所以CSP通常会阻止所有内联样式,并将那些经过特别批准的内容列入白名单 。
以下规则阻止所有内联样式以及外部托管的样式表:
Content-Security-Policy "style-src 'self';"使用哈希和随机数验证样式
如果阻止内联样式不能禁止,我们仍然可以使用哈希和随机数确保CSS的完整性 。
在样式表或内联样式上执行散列函数时,除非样式更改,否则它应该始终返回相同的结果 。这对于将某些内联样式和样式表列入白名单非常有用,同时可以验证样式是否未被修改或篡改 。
样式表通常托管在第三方服务器上,例如CDN中,这会导致一个新的攻击入口 。如果CDN遭到入侵,怎么能阻止攻击篡改托管的CSS呢?
答案是SRI,可以使用资源完整性(SRI)解决此问题 。
SRI使用哈希来验证脚本和样式表的内容 。计算每个文件的哈希并将其附加到HTML元素的完整性属性 。当浏览器下载脚本或样式表时,它会计算其哈希值并将其与存储在属性中的值进行比较 。如果匹配,才会加载脚本或样式 。
- 如何获取div中的内容 jquery获取div内容
- 日本福岛食品解禁了吗 为什么禁止从日本福岛进口
- 电脑桌面点击右键没有新建文件夹 电脑右键怎么没有新建文件夹
- JavaScript获取div高度 css获取div高度
- 两个div并排显示 两个div怎么并列
- css超出部分滚动条 div内容超出后自动显示滚动条
- windows7怎么禁止更新 win7停止更新设置
- 怎么获取div的值 js获取html的值
- div 文字换行 css div自动换行
- div中的div居中对齐 div中div垂直居中对齐