2011-06-29 43 views
12

我有一個客戶想要在他自己的服務器上託管他的web字體。我有一個字體託管到現在的font.com帳戶。我說實話fonts.com agreement(第18點)。他們說,你可以在自己的服務器上託管文件,但你必須儘可能保護它們。如何保護WebFonts

我能想到這樣做的唯一方法是通過限制HTTP_REFERER.htaccess這些文件的請求。

我可以做更多保護這些字體嗎?做更多的事情是否有意義,你認爲這是否有足夠的保護?

我個人不相信技術版本的保護,你可以隨時複製你可以看到的東西。但我不希望我的客戶陷入法律糾紛。你有這方面的經驗嗎?

編輯

我感興趣的是法律方面。如果有人可以下載字體並重新使用它,會發生什麼?他們的意思是我必須僅通過熱鏈接或下載來保護字體嗎?

+4

我投票結束這個問題作爲題外話題,因爲它是關於法律建議,而不是編程建議。 – durron597

+0

@ durron597創建4年後,無論如何:D法律方面只是獎金問題。實際上它是關於技術方面的。我能做些什麼來使這個更清楚? – meo

回答

3

你會發現通過typekit在文章中的一些有趣的方法:"Serving and Protecting Fonts on the Web"

他們使用像HTTP推薦的方法檢查,base64編碼,分段。然而,這些都沒有提供完整的保護,並且有人同意這篇文章中的聲明:

事實上,對於瀏覽器中出現的內容,它必須位於網絡上。如果它在網上,它不可能得到完全的保護......我們已經承擔了我們自己的一些障礙。我們的目的只是爲了防止偶然的濫用,並明確表示從Typekit中獲取字體是一種明確而有意的行爲。

承擔的第二件事情是,被許可人可以一直忽略的協議,這就是爲什麼像Adobe公司產生一個最優秀的字體規定的使用條件,包括在Font licensing page網頁。

另請參閱W3 CSS3 webfonts規範中討論的Font Licensing Issues

14

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 =富),你只有當他們unqiueId匹配會話返回的字體文件,否則,你認爲它是一種欺騙引用熱門鏈接。這與將文件放置在經過身份驗證的僅限用戶的目錄中基本相同,但只有在用戶登錄後才能使用,而上述方法只是要求用戶在加載字體之前加載頁面,以防止熱鏈接。

+0

這不回答我的問題。我想知道可以做些什麼。 – meo

+0

你問這個方法是否有意義,我同意了。使用像* mod_security *這樣的模塊並將類似'SecFilterSelective'HTTP_REFERER「」^ [^ \?] * mydomain \ .com「的過濾器應用於帶有字體的目錄將拒絕來自其他站點的所有不符合要求的請求。 –

+0

是的,但你談論一個好的開始,那麼下一步呢? :) – meo

0

這是一個混合的目標 - 保護文件免受複製,同時給每個人一份文件。 Twisted Pear的答案可能是找到中間立場的最佳答案。

如果你想保護文件,然後將文本呈現在服務器上的圖像。

在法律上,您可以針對託管您的字體文件的網站調用DMCA。

+0

我唯一想要的就是尊重font.com協議,而不使用圖像......那麼使用網頁字體的興趣是什麼...... – meo

4

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

通過獨家字體(最後的評論)顯然,批准和MyFonts建議(http://twitter.com/#!/MyFonts/status/98767132321521664)。

編輯:我想這是在comment 26提到的解決方案:

RewriteCond "%{HTTP_HOST}_%{HTTP_REFERER}" "!\.?([^\.]+\.[^\.]+?)_https?://.*\1/.*$" 
RewriteRule \.(woff|eot)$ - [F,NC,L] 
+0

其有點難以找到合適的帖子。如果您可以添加與您的答案相關的報價,至少得到了我的+1,也許是正確的答案。 – meo

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訪問。