托管网络字体,CDN,@ font-face和隐私

时间:2012-07-06 21:48:16

标签: css security fonts font-face privacy

如果您在CDN上使用托管字体,使用@ font-face,或使用类似Typekit的服务,主机是否可以读取页面中字体呈现的所有字符(因此读取)你网页的内容)?

如果是这样,这似乎是一个重要的隐私问题。

有关此主题的任何专业知识或推荐阅读材料?

1 个答案:

答案 0 :(得分:9)

Web字体存储为单个文件(WOFF,OTF,EOT或SVG),浏览器必须完整地提取这些文件以显示其中的任何字符。因此,无法检测单个字符的使用情况。

网络字体嵌入存在潜在的隐私泄漏,但它比这更加微妙,并且不太可能被任何东西利用。

仅当您使用网络字体作为后备字体时才会出现这种情况,例如:

@font-face {
  font-family: "One";
  src: url(http://themes.googleusercontent.com/static/fonts/overlock/v2/Pr-80_x4SIOocpxz2VxC5fesZW2xOQ-xsNqO47m55DA.woff) format('woff');
}
@font-face {
  font-family: "Two";
  src: url(http://themes.googleusercontent.com/static/fonts/overlock/v2/EcjpF2hW5gSZ4M16YLdG84bN6UDyHWBl620a-IRfuBk.woff) format('woff');
}
p {
    font-family: "One", "Two", sans-serif;
}

在此示例中,如果<p>元素中只有拉丁字符,则浏览器可能会选择仅获取字体“One”的WOFF文件。如果“One”字体中没有其他字符,则浏览器也必须获取第二个文件,以便在“Two”中查找字符的字形。因此,外部参与方将能够知道页面上已使用“One”中不存在的一个或多个字符。

我不担心。 IMO非常不可能使用嵌入式回退字体(除了故意,尝试优化常见字符并使用相同字体的扩展版本,其中使用了不常见的字符)。

无论如何,它并不会发生在所有浏览器上。 Chrome会这样做; Firefox总是提取文档中元素使用的字体系列列表中包含的每个嵌入字体。