Emne

Signerede OG-billed-URL'er

En signeret OG-billed-URL er en URL, hvis parametre er beskyttet med en HMAC-SHA256-signatur, så kun du (og den kode, der har din hemmelige nøgle) kan anmode om renders, der tæller med i dit månedlige kvota. FastOG signerer indholdet — identiske parametre producerer altid den identiske, cachelagrede URL — hvilket både beskytter dit kvota og gør caching deterministisk.

Hvorfor signere OG-billed-URL'er

Et OG-billed-endepunkt, der gengiver vilkårlig tekst fra en uautentificeret URL, er en gratis render-farm, som alle kan ramme. På en abonnementsbaseret tjeneste betyder det, at enhver kan brænde din saldo af. Ved at signere hver URL med en hemmelighed, som kun din backend kender, blokeres alle uautoriserede forespørgsler ved det første (ikke-cachelagrede) kald, mens legitime, cachelagrede URL'er fortsat fungerer.

Sådan fungerer indholdssignering

  1. Du opbygger den kanoniske forespørgselsstreng: hver parameter (undtagen signaturen), sorteret og RFC-3986-kodet.
  2. Du beregner HMAC_SHA256(secret, "GET/api/v1/og\n" + canonical).
  3. Du tilføjer signaturen som parameteren s.

Beskeden indeholder intet tidsstempel, så URL'en er stabil: samme parametre → samme URL → samme cache-post.

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

Det kompromis, folk misforstår

Bekymring Virkelighed
"En signeret URL udløber" Nej — den er indholdssigneret og gyldig, indtil du roterer hemmeligheden
"En manipuleret URL ødelægger cachen" Nej — en ugyldig s får kun 401 ved et cache-miss; cached billeder returneres alligevel
"Jeg har brug for tidsstempler for sikkerhed" Indholdssignering er nok til at stoppe kvote-misbrug; ingen clock nødvendig

One-file SDK'er

FastOG leverer en enkelt signer-fil pr. sprog (nul afhængigheder), så du aldrig selv skal implementere HMAC. Download fra SDK-siden eller curl direkte fra CDN'et:

bash
curl -O https://fastog.com/sdk/node.js

FAQ

Udløber signerede URL'er nogensinde?

Ikke som standard — de forbliver gyldige, indtil du roterer API-nøglens HMAC-hemmelighed. Indholdssigneret, ikke tidssigneret.

Kan en anden bruge mit kvota ved at gætte en URL?

Nej. De skal bruge din HMAC-hemmelighed for at danne en gyldig signatur; uden den returnerer ikke-cachelagrede renders 401 invalid_signature.

Skal jeg signere URL'en i browseren?

Nej. Signér server-side (eller i en edge-funktion), hvor hemmeligheden aldrig sendes til klienten. Den renderede billed-URL er sikker at placere i din offentlige <head>.

Prøv det gratis – ingen tilmelding nødvendig

Forhåndsvis og test dynamiske OG-billeder på få sekunder.

Åbn den gratis OG-billedtester

A BeCaSimulations site