Как защитить веб-шрифты

У меня есть клиент, который хочет разместить свои веб-шрифты на своем собственном сервере. У меня есть аккаунт на font.com, где шрифт был размещен до сих пор. Я согласился с соглашением fonts.com (пункт 18), где говорится, что вы можете размещать файлы на своем собственном сервере, но вы должны защищать их как можно лучше.

Единственный способ, которым я могу думать, это ограничить запросы к этим файлам HTTP_REFERER в .htaccess,

Могу ли я сделать больше, чтобы защитить эти шрифты? Есть ли смысл делать больше, и считаете ли вы, что это достаточная защита?

Я лично не верю в техническую защиту от копирования, вы всегда можете скопировать то, что видите. Но я не хочу, чтобы у моего клиента были проблемы с законом. Есть ли у вас опыт с этим?

редактировать

Я также заинтересован в юридическом аспекте. Что может произойти, если кто-то сможет скачать шрифт и использовать его повторно? Они означают, что я должен защищать шрифт только от хотлинкинга или от скачивания?

5 ответов

Решение

Вы найдете несколько интересных методов в статье от typekit: "Обслуживание и защита шрифтов в Интернете"

Они используют такие методы, как проверка HTTP Referrer, base64-кодирование, сегментирование. Однако ни один из них не обеспечивает полную защиту, и каждый согласен с этим утверждением из статьи:

Дело в том, что для того, чтобы что-то появилось в браузере, оно должно быть в Интернете. Если он есть в сети, он не может быть полностью защищен.... Мы сами создали несколько препятствий. Наша цель - не допустить случайного неправильного использования и прояснить, что изъятие шрифтов из Typekit является явным и преднамеренным действием.

Второе, что следует иметь в виду, - это то, что лицензиат всегда может игнорировать соглашение, и именно поэтому такие компании, как Adobe, которая выпускает один из лучших шрифтов, указывают условия использования, в том числе для Интернета, на странице лицензирования шрифтов.

См. Также вопросы лицензирования шрифтов, обсуждаемые в спецификации веб-шрифтов W3 CSS3.

HTTP_REFERER и USER_AGENT могут быть легко подделаны. При этом, если вы хотите предотвратить горячие ссылки, то HTTP_REFERER - хорошее начало, чтобы ограничить его вызовами из вашего собственного приложения.

С Apache mode_security

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

Добавление вышеуказанного в каталог со шрифтами будет отклонять все несоответствующие запросы с других сайтов.

Для дополнительной безопасности, когда кто-то использует ваше приложение, вы предоставляете им сеанс на сервере (скажем, PHP) и сохраняете там уникальный идентификатор.

<?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 соответствует их сеансу, в противном случае вы предполагаете, что это поддельная горячая ссылка реферера. По сути, это то же самое, что размещение файла в аутентифицированном пользовательском каталоге, но это будет работать только в том случае, если пользователи вошли в систему, в то время как вышеописанный метод просто требует от пользователя загрузить страницу до загрузки шрифта, чтобы предотвратить появление горячих ссылок.,

См. 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]

Не эксперт по 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 вашего собственного сайта.

Это смешанная цель - защитить файл от копирования, предоставив каждому копию файла. Ответ Twisted Pear, вероятно, лучший с точки зрения нахождения среднего уровня.

Если вы хотите защитить файл, то выведите текст в изображения на сервере.

Юридически вы можете использовать DMCA для сайтов, на которых размещен ваш файл шрифтов.

Другие вопросы по тегам