URL-uri OG Image semnate
Un URL OG Image semnat este un URL ale cărui parametri sunt protejați cu o semnătură HMAC-SHA256, astfel încât doar tu (și codul care deține secretul tău) poți solicita randări care se contabilizează în cota ta lunară. FastOG semnează conținutul — parametri identici produc întotdeauna același URL, stocat în cache — ceea ce îți protejează cota și face stocarea în cache deterministă.
De ce să semnezi URL-urile imaginilor OG
Un endpoint pentru imagini OG care randează text arbitrar dintr-un URL neautentificat este o fermă de randare gratuită pe care oricine o poate accesa. Într-un serviciu bazat pe abonament, asta înseamnă că oricine ți-ar putea consuma soldul. Semnarea fiecărui URL cu un secret pe care doar backend-ul tău îl cunoaște blochează orice cerere neautorizată la prima preluare (necachetată), în timp ce URL-urile legitime și cache-uite continuă să funcționeze.
Cum funcționează semnarea conținutului
- Construiești șirul de interogare canonic: fiecare parametru (cu excepția semnăturii), sortat și codificat conform RFC-3986.
- Calculezi
HMAC_SHA256(secret, "GET/api/v1/og\n" + canonical). - Adaugi semnătura ca parametru
s.
Mesajul nu include un marcaj de timp, deci URL-ul este stabil: aceiași parametri → același URL → aceeași intrare în 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
Compromisul pe care oamenii îl înțeleg greșit
| Îngrijorare | Realitate |
|---|---|
| „Un URL semnat va expira” | Nu — este semnat pe conținut, valid până când rotești secretul |
| „Un URL modificat strică cache-ul” | Nu — un s fals primește doar 401 la un miss de cache; imaginile din cache se returnează oricum |
| „Am nevoie de timestamp-uri pentru securitate” | Semnarea conținutului este suficientă pentru a opri abuzul de cotă; nu e nevoie de ceas |
SDK-uri într-un singur fișier
FastOG livrează un singur fișier semnatar (signer) pentru fiecare limbaj (zero dependențe), astfel încât să nu mai implementezi niciodată HMAC manual. Descarcă de pe pagina SDK sau curl direct din CDN:
curl -O https://fastog.com/sdk/node.js
Întrebări frecvente
Expiră vreodată URL-urile semnate?
Nu, implicit nu — rămân valide până când rotești secretul HMAC al cheii API. Sunt semnate pe conținut, nu pe timp.
Poate altcineva să-mi consume cota ghicind un URL?
Nu. Are nevoie de secretul tău HMAC pentru a forma o semnătură validă; fără el, randările necacheate returnează 401 invalid_signature.
Semnez URL-ul în browser?
Nu. Semnează pe server (sau într-o funcție edge) unde secretul nu ajunge niciodată la client. URL-ul imaginii randate este sigur de pus în <head>-ul tău public.