我有一个客户端希望在自己的服务器上托管他的webfonts.我有一个font.com帐户,字体托管到现在为止.我说明了fonts.com协议(第18点).他们说,你可以在自己的服务器上托管文件,但你必须尽可能地保护它们.
我能想到这样做的唯一途径,是通过限制对这些文件的要求同HTTP_REFERER
在.htaccess
.
我可以做更多保护这些字体吗?做更多是否有意义,你认为这是一个充分的保护吗?
我个人并不相信技术拷贝保护,你可以随时复制你能看到的东西.但我不希望我的客户陷入法律纠纷.你有这方面的经验吗?
编辑
我也对法律方面感兴趣.如果有人可以下载并重复使用它,会发生什么?他们是否意味着我必须保护字体仅用于热链接或下载?
Jos*_*ust 15
HTTP_REFERER和USER_AGENT很容易被欺骗.话虽这么说,如果你想阻止热链接,那么HTTP_REFERER是一个很好的开始,将它限制为来自你自己的应用程序的调用.
使用Apache mode_security
SecFilterSelective "HTTP_REFERER" "^[^\?]*mydomain\.com"
Run Code Online (Sandbox Code Playgroud)
将上述内容添加到具有字体的目录中将拒绝来自其他站点的所有不符合要求的请求.
为了提高安全性,当有人使用您的应用程序时,您可以在服务器上为他们提供会话(例如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>';
?>
Run Code Online (Sandbox Code Playgroud)
这适用于字体.
<?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
?>
Run Code Online (Sandbox Code Playgroud)
然后,你引用你的字体的动态页面(比如getFont.php?uniqueId = foo),如果unqiueId匹配它们的会话你只返回字体文件,否则你认为它是一个欺骗的引用热链接.这与将文件放在经过身份验证的用户目录中基本相同,但这只有在用户登录时才有效,而上述方法只需要用户在加载字体之前加载页面,以防止热链接.
参见https://bugzilla.mozilla.org/show_bug.cgi?id=540859
显然由FontShop批准(最新评论),并由MyFonts建议(http://twitter.com/#!/MyFonts/status/98767132321521664)。
编辑:我想这是评论26中提到的解决方案:
RewriteCond "%{HTTP_HOST}_%{HTTP_REFERER}" "!\.?([^\.]+\.[^\.]+?)_https?://.*\1/.*$"
RewriteRule \.(woff|eot)$ - [F,NC,L]
Run Code Online (Sandbox Code Playgroud)
你会在 typekit 的文章中找到一些有趣的方法:“Serving and Protecting Fonts on the Web”
他们使用 HTTP Referrer 检查、base64 编码、分段等方法。然而,这些都没有提供完整的保护,有人同意文章中的这一说法:
事实是,要在浏览器中显示某些内容,它必须在网络上。如果它在网络上,就不能完全受到保护......我们已经设置了一些自己的障碍。我们的目的只是为了阻止随意的误用,并明确表示从 Typekit 中获取字体是一种明确且有意的行为。
第二件事是被许可人总是可以无视协议,这就是为什么像 Adobe 这样生产最优秀字体的公司在字体许可页面中声明了包括网络在内的使用条款。
另请参阅W3 CSS3 webfonts 规范中讨论的字体许可问题。