Ondertekende OG-afbeeldings-URL's
Een ondertekende OG-afbeeldings-URL is een URL waarvan de parameters zijn beveiligd met een HMAC-SHA256-handtekening, zodat alleen jij (en de code die jouw geheim bevat) renders kunt aanvragen die meetellen voor je maandelijkse quotum. FastOG ondertekent de inhoud — identieke parameters produceren altijd dezelfde, gecachte URL — wat zowel je quotum beschermt als caching deterministisch maakt.
Waarom OG-afbeeldings-URL’s ondertekenen
Een OG-afbeeldingsendpoint dat willekeurige tekst rendert vanaf een niet-geauthenticeerde URL is een gratis renderfarm die iedereen kan gebruiken. Bij een abonnementsservice betekent dit dat iedereen je saldo kan opmaken. Door elke URL te ondertekenen met een geheim dat alleen je backend kent, blokkeer je elke niet-geautoriseerde aanvraag bij de eerste (niet-gecachete) fetch, terwijl legitieme, gecachte URL’s blijven werken.
Hoe content-ondertekening werkt
- Je bouwt de canonieke query-string: elke parameter (behalve de handtekening), gesorteerd en RFC-3986-gecodeerd.
- Je berekent
HMAC_SHA256(secret, "GET/api/v1/og\n" + canonical). - Je voegt de handtekening toe als de
s-parameter.
Het bericht bevat geen tijdstempel, dus de URL is stabiel: dezelfde parameters → dezelfde URL → dezelfde cache-entry.
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
De afweging die mensen verkeerd begrijpen
| Zorg | Realiteit |
|---|---|
| "Een ondertekende URL verloopt" | Nee — deze is inhoudsondertekend en geldig totdat je het geheim roteert |
| "Een gemanipuleerde URL verbreekt de cache" | Nee — een ongeldige s krijgt alleen een 401 bij een cache miss; gecachte afbeeldingen worden toch geretourneerd |
| "Ik heb tijdstempels nodig voor beveiliging" | Inhoudsondertekening is voldoende om quotummisbruik te stoppen; geen klok nodig |
One-file-SDK's
FastOG levert één signer-bestand per taal (zonder afhankelijkheden), zodat je nooit zelf HMAC hoeft te implementeren. Download het van de SDK-pagina of curl rechtstreeks vanaf de CDN:
curl -O https://fastog.com/sdk/node.js
FAQ
Verlopen ondertekende URL's ooit?
Standaard niet — ze blijven geldig totdat je het HMAC-geheim van de API-sleutel roteert. Inhoud-ondertekend, niet tijd-ondertekend.
Kan iemand anders mijn quotum verbruiken door een URL te raden?
Nee. Ze hebben je HMAC-geheim nodig om een geldige handtekening te vormen; zonder dat retourneren niet-gecachte renders 401 invalid_signature.
Onderteken ik de URL in de browser?
Nee. Onderteken server-side (of in een edge-functie) waar het geheim nooit naar de client wordt verzonden. De gerenderde afbeeldings-URL is veilig om in je publieke <head> te plaatsen.