Предотвращение доступа к шрифтам с помощью .htaccess - PullRequest
4 голосов
/ 05 декабря 2010

Мой клиент попросил меня использовать особый шрифт с @ font-face на его сайте. Но этот шрифт является активом для его организации, и он боится, что люди украдут его. Итак, есть ли способ сделать этот файл .ttf доступным для браузера, но запретить прямой доступ (прямо сейчас, вы можете прочитать URL в файле .css и скачать шрифт в любом браузере).

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

Любые предложения будут с благодарностью! Спасибо!


Как я это решил?

Чтение это . Команда Typekit отлично справилась с этой задачей. Это действительно невозможно предотвратить ограбление, но вы можете сделать это трудно. Я сделал две вещи:

  1. С генератором FontSquirrel I удалены все глифы рабочего стола, делая шрифт непригодным для использования на рабочий стол.

  2. Кодировать с Base64 все мои TTF прямо на моем CSS файл. (т. е. источник: URL (данные: шрифт; base64, jdslajdsaljdlsajdsa))

  3. EOT шрифты для IE не могут быть преобразован в Base64. Но вы можете загрузить те, что PHP-скрипт, который проверяет реферер и предотвращает прямой доступ.

Вы все еще можете собрать шрифт, имеющий base64, и да, вы можете подделать реферер и загрузить .EOT. Но это потребовало бы кого-то с правильным набором навыков. Люди, которые крадут шрифты, являются обычными дизайнерами, которые не знают, как обмануть Apache.

Ответы [ 5 ]

4 голосов
/ 05 декабря 2010

Если вы позволите чему-то попасть в браузер, тогда его общедоступно. AFAIK, нет способа заблокировать материал, который вы позволяете браузеру читать!

Отредактируйте этот бит кода, и вы можете создать изображение текста с нужным шрифтом (для этого нужна библиотека GD):

<?php
$image = imagecreatetruecolor(145, 30);// Image size
$color = imagecolorallocate($image, 163, 197, 82);// color
$bg = imagecolorallocate($image, 255, 255, 255); // background color white
imagecolortransparent($image, $bg);// Makes Background transparent!
imagefilledrectangle($image,0,0,399,99,$bg);
imagettftext($image, 25, 0, 25, 25, $color, "add/to/font.ttf", "text you can get from post or somewhere");
header("Content-type: image/png");
imagepng($image);
?>
4 голосов
/ 05 декабря 2010

Это абсолютно невозможно.

Вместо этого рассмотрите возможность использования изображения или удаления неиспользуемых символов из шрифта.

2 голосов
/ 05 декабря 2010

Создайте CGI-скрипт с именем .ttf.Добавьте AddHandler cgi-script ttf к параметрам Apache для этого каталога (в httpd.conf или .htaccess).

Пусть CGI-скрипт проверит поле Referer (да, оно неправильно написано в спецификации) и сравните его с адресом, с которого вы ожидаете, что он придет.Если это так, откройте файл шрифта и запишите его (конечно, с добавлением пары заголовков HTTP).Если нет, перенаправьте куда-нибудь еще.

Я никогда не проверял поле Referer, но давно делал что-то подобное с PDF-файлами.

Примечание: если я хотел получитьшрифт, это только немного замедлит меня.Но это замедлит большинство людей.Я рекомендую сделать файл изображения с вашим текстом и разместить его на вашем сайте.

0 голосов
/ 05 декабря 2010

слышал о куфоне? http://cufon.shoqolate.com/generate/

или наберите: http://typekit.com/

или SFIR: http://wiki.novemberborn.net/sifr/

Надеюсь, это поможет вам в ваших исследованиях.

0 голосов
/ 05 декабря 2010

Визуализация текста на сервере.

...