2010-12-04 29 views
4

Mon client me demande d'utiliser une police spéciale avec @ font-face sur son site Web. Mais, cette police est un atout pour son organisation, et il a peur que les gens la volent. Donc, est-il possible de rendre ce fichier .ttf accessible par le navigateur, mais empêche l'accès direct (en ce moment, vous pouvez lire l'URL dans le fichier .css, et télécharger la police avec n'importe quel navigateur).Empêcher l'accès aux polices avec .htaccess

Je sais qu'il n'y a pas de solution absolue, et la police serait toujours disponible pour quelqu'un avec les bonnes compétences ensemble. Mais je veux juste rendre plus difficile de voler pour les non-experts.

Toutes les suggestions seraient grandement appréciées! Merci!


Comment j'ai résolu ceci?

Lecture this. L'équipe de Typekit a fait un excellent travail sur celui-ci. Il est vraiment impossible d'empêcher le vol, mais vous pouvez le rendre difficile. Je l'ai fait deux choses:

  1. Avec FontSquirrel générateur, je supprimé toutes les Glyphes de bureau, rendant la police inutilisable sur un ordinateur de bureau .

  2. Encodez avec Base64 tout mon TTF directement sur mon fichier CSS . (C.-à-src: url (data:. Police; base64, jdslajdsaljdlsajdsa))

  3. polices EOT, pour IE, ne peut pas être converti en base64. Mais, vous pouvez charger ces vía un script php que vérifie le referer, et empêche l'accès direct .

Vous pouvez toujours réassembler la police ayant le base64, et oui, vous pouvez simuler le referer et télécharger le fichier .EOT. Mais il faudrait quelqu'un avec le bon ensemble de compétences. Les gens qui vole les polices sont des concepteurs réguliers qui ne savent pas comment tromper apache.

+2

Aucun expert en la matière, mais je crois que vous devez autoriser l'accès à la police. Sinon, comment le navigateur l'utiliserait-il pour afficher sur la page? – shamazing

Répondre

4

Ceci est complètement impossible. À la place, envisagez d'utiliser une image ou de supprimer des caractères inutilisés de la police.

+0

Merci! Je vais regarder dedans. – fedeisas

4

Si vous laissez quelque chose pour accéder au navigateur, c'est public. AFAIK il n'y a aucun moyen de bloquer les choses que vous laissez le navigateur le lire!

Modifier ce morceau de code et vous pouvez faire l'image de texte avec la police que vous voulez (il besoin bibliothèque 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); 
?> 
+0

Ce site a beaucoup d'endroits utilisant la police. La barre de navigation et tous les titres Ce serait lourd sur le serveur de rendre 50 images avec php sur chaque chargement de page. Bien que, je pourrais faire un dossier de cache pour empêcher ceci. La chose qui serait dure, c'est que les images ne sont pas lisibles par les robots de recherche. C'est pourquoi je préfère utiliser le texte. Merci pour vos suggestions de toute façon! – fedeisas

+0

Votre attribut de bienvenue et pour les bots de recherche "alt" est pratique, et vous pouvez ajouter quelques css pour faire ressembler la taille et la couleur de l'image Text In de sorte que l'utilisateur aura tout avant le chargement des images et bien sur les robots de recherche ! –

0

Render le texte sur le serveur.

+0

Merci! Je vais regarder dedans. – fedeisas

+0

comment iriez-vous faire cela? le rendre sur le serveur en tant qu'image – sam

2

Créez un script CGI nommé .ttf. Ajoutez AddHandler cgi-script ttf aux options Apache pour ce répertoire (dans httpd.conf ou .htaccess). Demandez au script CGI de vérifier le champ Referer (oui, il est orthographié de manière incorrecte comme dans la spécification) et de le comparer à l'adresse attendue. Si c'est le cas, ouvrez le fichier de police et écrivez-le (préfixé par deux en-têtes HTTP, bien sûr). Sinon, redirigez-vous ailleurs.

Je n'ai jamais vérifié le champ Referer, mais j'ai fait quelque chose de similaire avec les PDF il y a longtemps. Note: si je voulais obtenir la police, cela ne ferait que me ralentir un peu. Mais cela ralentirait beaucoup les gens. Je recommande de faire un fichier image avec votre texte et le mettre dans votre site Web.

+0

Cela ressemble à une option intéressante. Mais je n'ai jamais écrit de scripts CGI. Pensez-vous que quelque chose comme ça fonctionnerait http://www.mail-archive.com/[email protected]/msg05035.html ?? MERCI! – fedeisas

+0

Je préférerais ne pas utiliser Perl, mais cela semble fonctionner. Mais méfiez-vous des conversions de nouvelle ligne dans le fichier ttf - je ne sais pas assez sur ttf pour savoir si c'est un problème. En outre, je ne dirais pas aux gens la raison pour laquelle ils ne peuvent pas accéder à la police - cela leur indique comment ils peuvent tromper le site pour les laisser entrer. – robert

+0

@robert: Si vous allez sur la page qui comprend la police et coller l'URL dans la barre d'adresse, vous pouvez le télécharger immédiatement, même sans spoofer le referer. – thejh

0

Entendu de Cufon? http://cufon.shoqolate.com/generate/

ou Typekit: http://typekit.com/

ou SFIR: http://wiki.novemberborn.net/sifr/

J'espère que ceux-ci vous aider dans vos recherches.

+0

Merci pour votre contribution! TypeKit est génial, je prends leur mécanisme d'inspiration (vérifiez la réponse à nouveau, c'est résolu) mais je n'allais pas payer! SIFR et Cufon étaient super il y a quelques mois, mais maintenant j'essaie de ne pas utiliser le flash, les règles @ font-face! – fedeisas