URL d’image OG signées
Une URL d’image OG signée est une URL dont les paramètres sont protégés par une signature HMAC-SHA256, de sorte que seuls vous (et le code détenant votre secret) pouvez demander des rendus qui comptent dans votre quota mensuel. FastOG signe le contenu — des paramètres identiques produisent toujours la même URL mise en cache — ce qui protège à la fois votre quota et rend la mise en cache déterministe.
Pourquoi signer les URL d’images OG
Un endpoint d’image OG qui génère du texte arbitraire à partir d’une URL non authentifiée constitue une ferme de rendu gratuite que n’importe qui peut solliciter. Sur un service par abonnement, cela signifie que n’importe qui pourrait épuiser votre solde. Signer chaque URL avec un secret connu uniquement de votre backend bloque toute requête non autorisée dès le premier chargement (non mis en cache), tandis que les URL légitimes et mises en cache continuent de fonctionner.
Fonctionnement de la signature de contenu
- Vous construisez la chaîne de requête canonique : chaque paramètre (à l'exception de la signature), trié et encodé selon la RFC-3986.
- Vous calculez
HMAC_SHA256(secret, "GET/api/v1/og\n" + canonical). - Vous ajoutez la signature en tant que paramètre
s.
Le message n'inclut pas d'horodatage, donc l'URL est stable : mêmes paramètres → même URL → même entrée de cache.
canonical = "key=sk_...&template=default&title=Hello"
signature = HMAC-SHA256(secret, "GET/api/v1/og\n" + canonical)
url = ".../api/v1/og?key=...&template=default&title=Hello&s=" + signature
Le compromis que les gens comprennent mal
| Préoccupation | Réalité |
|---|---|
| « Une URL signée va expirer » | Non — elle est signée par contenu, valide jusqu'à ce que vous fassiez pivoter le secret |
| « Une URL falsifiée casse le cache » | Non — un s invalide reçoit seulement une erreur 401 lors d'un miss du cache ; les images en cache sont renvoyées de toute façon |
| « J'ai besoin d'horodatages pour la sécurité » | La signature par contenu suffit à empêcher les abus de quota ; aucune horloge n'est nécessaire |
SDK en un seul fichier
FastOG fournit un seul fichier de signature (signer) par langage (zéro dépendance), afin que vous n'ayez jamais à implémenter HMAC manuellement. Téléchargez-le depuis la page SDK ou curl directement depuis le CDN :
curl -O https://fastog.com/sdk/node.js
FAQ
Les URL signées expirent-elles un jour ?
Non, pas par défaut — elles restent valides jusqu'à ce que vous fassiez pivoter le secret HMAC de la clé API. Elles sont signées par contenu, et non par temps.
Quelqu'un d'autre peut-il consommer mon quota en devinant une URL ?
Non. Il lui faut votre secret HMAC pour former une signature valide ; sans cela, les rendus non mis en cache renvoient 401 invalid_signature.
Dois-je signer l'URL dans le navigateur ?
Non. Signez côté serveur (ou dans une fonction edge) où le secret n'est jamais transmis au client. L'URL de l'image rendue peut être placée en toute sécurité dans votre <head> public.