15

我有一个客户想在他自己的服务器上托管他的网络字体。我有一个 font.com 帐户,直到现在为止托管了该字体。我确实遵守了fonts.com 协议(第 18 点。)他们说,您可以在自己的服务器上托管文件,但您必须尽可能地保护它们。

我能想到的唯一方法是HTTP_REFERER通过.htaccess.

我可以采取更多措施来保护这些字体吗?赚更多有什么意义吗?你认为这是一种足够的保护吗?

我个人不相信技术复制保护,你总是可以以某种方式复制你能看到的东西。但我不希望我的客户陷入法律纠纷。你有这方面的经验吗?

编辑

我对法律方面也很感兴趣。如果有人可以下载字体并重用它,会发生什么?他们是否意味着我必须只保护字体免受热链接或下载?

4

5 回答 5

16

HTTP_REFERER 和 USER_AGENT 很容易被欺骗。话虽如此,如果您想防止热链接,那么 HTTP_REFERER 是一个很好的开始,可以将其限制为来自您自己的应用程序的调用。

使用 Apache mode_security

SecFilterSelective "HTTP_REFERER" "^[^\?]*mydomain\.com"

将上述内容添加到带有字体的目录将拒绝来自其他站点的所有不合规请求。

为了提高安全性,当有人使用您的应用程序时,您在服务器上给他们一个会话(例如 PHP),并在那里存储一个 uniqueId。

<?PHP
// #header.php - in the head of the page that uses the font
// ...
if( !isset( $_SESSION['uniqueId'] ) ) {
    $_SESSION['uniqueId'] = rand( pow(2,16), pow(2,31) );
}
$uniqueId = $_SESSION['uniqueId'];

echo '<script type="text/javascript" src="http://foo.com/getFont.php?u='.$uniqueId.'"></script>';
?>

这为字体服务。

<?PHP
// #getFont.php - serve your fonts from here
// ...
if( !isset( $_GET['u'] ) || !isset( $_SESSION['uniqueId'] ) || $_SESSION['uniqueId']!=$_GET['u'] ) {
    die('Bad Request');
}

// cat out the file contents here for the request font file
?>

然后,您为您的字体引用一个动态页面(例如 getFont.php?uniqueId=foo),并且仅当 unqiueId 与他们的会话匹配时才返回字体文件,否则您认为它是一个欺骗性的引用热链接。这与将文件放在仅经过身份验证的用户的目录中基本相同,但只有在用户登录时才有效,而上述方法只是要求用户在加载字体之前加载页面,以防止热链接.

于 2011-06-29T15:54:14.067 回答
7

See https://bugzilla.mozilla.org/show_bug.cgi?id=540859

Apparently approved by FontShop (last comment) and suggested by MyFonts (http://twitter.com/#!/MyFonts/status/98767132321521664).

EDIT: I guess it's the solution mentioned in comment 26:

RewriteCond "%{HTTP_HOST}_%{HTTP_REFERER}" "!\.?([^\.]+\.[^\.]+?)_https?://.*\1/.*$"
RewriteRule \.(woff|eot)$ - [F,NC,L]
于 2011-08-03T14:59:43.873 回答
5

您会在 typekit 的文章中找到一些有趣的方法:“在 Web 上提供和保护字体”

他们使用 HTTP Referrer 检查、base64 编码、分段等方法。然而,这些都没有提供完整的保护,人们同意文章中的这一说法:

事实是,要在浏览器中显示某些内容,它必须在网络上。如果它在网络上,它就不能完全受到保护……我们自己设置了一些障碍。我们的目的只是为了阻止随意的误用,并明确表示从 Typekit 获取字体是一种明确且有意的行为。

第二件事是被许可人可以随时无视协议,这就是为什么像 Adob​​e 这样生产最优秀字体的公司在字体许可页面中声明了包括网络在内的使用条款。

另请参阅W3 CSS3 webfonts 规范中讨论的字体许可问题。

于 2011-10-02T14:49:53.807 回答
2

不是 Apache 方面的专家,但我们使用了它,它似乎运行良好:

Options -Indexes
IndexIgnore *.woff *.eot
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yoursite\.com/.* [NC]
RewriteCond %{REQUEST_URI} !hotlink\.(woff|eot) [NC]
RewriteRule .*\.(woff|eot)$ http://yoursite.com/ [NC,F,L]

直接下载会导致 403,但仍然可以通过您自己网站的 CSS 访问这些文件。

于 2013-07-22T13:43:40.970 回答
0

这是一个混合目标 - 保护文件不被复制,同时为每个人提供文件的副本。就找到中间立场而言,Twisted Pear 的答案可能是最好的。

如果要保护文件,请在服务器上将文本渲染为图像。

从法律上讲,您可以针对托管您的字体文件的网站调用 DMCA。

于 2011-07-03T15:24:53.253 回答