4

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

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

关于这个主题的任何专业知识或推荐阅读?

4

1 回答 1

9

Web 字体存储为单一文件(WOFF、OTF、EOT 或 SVG),浏览器必须完整获取这些文件才能显示其中的任何字符。所以不可能检测到单个字符的使用。

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

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

@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 总是获取文档中元素使用的字体系列列表中包含的每个嵌入字体。

于 2012-07-08T07:45:46.180 回答