URL delle immagini OG firmate
Un URL di immagine OG firmato è un URL i cui parametri sono protetti da una firma HMAC-SHA256, così solo tu (e il codice che detiene il tuo segreto) puoi richiedere rendering che contano contro la tua quota mensile. FastOG firma il contenuto: parametri identici producono sempre lo stesso URL identico e memorizzato nella cache, il che protegge la tua quota e rende la cache deterministica.
Perché firmare gli URL delle immagini OG
Un endpoint per le immagini OG che genera testo arbitrario da un URL non autenticato è una sorta di render farm gratuita che chiunque può sfruttare. Su un servizio a pagamento, questo significa che chiunque potrebbe consumare il tuo credito. Firmare ogni URL con un segreto noto solo al tuo backend blocca ogni richiesta non autorizzata al primo fetch (non in cache), mentre gli URL legittimi e memorizzati nella cache continuano a funzionare.
Come funziona la firma dei contenuti
- Costruisci la stringa di query canonica: ogni parametro (tranne la firma), ordinato e codificato secondo RFC-3986.
- Calcoli
HMAC_SHA256(secret, "GET/api/v1/og\n" + canonical). - Aggiungi la firma come parametro
s.
Il messaggio non include un timestamp, quindi l'URL è stabile: stessi parametri → stesso URL → stessa voce di 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
Il compromesso che la gente fraintende
| Preoccupazione | Realtà |
|---|---|
| "Un URL firmato scadrà" | No — è firmato sul contenuto, valido finché non ruoti il segreto |
| "Un URL manomesso rompe la cache" | No — un s falso riceve solo un 401 su un miss della cache; le immagini in cache vengono comunque restituite |
| "Mi servono timestamp per la sicurezza" | La firma sul contenuto basta a fermare l'abuso delle quote; non serve un orologio |
SDK in un unico file
FastOG fornisce un singolo file signer per linguaggio (zero dipendenze), così non devi mai implementare HMAC a mano. Scaricalo dalla pagina SDK o curl direttamente dalla CDN:
curl -O https://fastog.com/sdk/node.js
FAQ
Gli URL firmati scadono mai?
Non di default: restano validi finché non ruoti il segreto HMAC della chiave API. Firmati per contenuto, non per tempo.
Qualcun altro può consumare la mia quota indovinando un URL?
No. Serve il tuo segreto HMAC per formare una firma valida; senza, i render non memorizzati nella cache restituiscono 401 invalid_signature.
Firmo l'URL nel browser?
No. Firma lato server (o in una edge function) dove il segreto non arriva mai al client. L'URL dell'immagine renderizzata è sicuro da inserire nel tuo <head> pubblico.