HMAC-godkendelse og sikkerhed
Beskyt dine HMAC-signerede OG-billed-URL'er med FastOG's HMAC-SHA256-godkendelse. Denne guide dækker signering, validering og fejlfinding af hver anmodning, så du kan levere dynamiske Open Graph-billeder i farten — abonnementsbegrænset, med ubegrænsede renders (uden månedlig render-kvote og uden overforbrugsafregning). Tilmeld dig, vælg en Dynamic API-plan, og opret derefter din API-nøgle og HMAC-hemmelighed i dashboardet (betalt API-renders er rene). Signér på din server én gang, og integrér på få minutter.
🚀 Hurtig start
Ny til HMAC-signering? Start her:
- Guide til hurtig start — Kom i gang på 5 minutter
- JavaScript-tutorial — Komplet guide til Node.js/Next.js-udviklere
- Alle framework-tutorials — vælg din stack:
📚 Dokumentationsindeks
Kernekoncepter
- HMAC-signaturguide — Komplet reference med algoritmedetaljer, krav og eksempler i JavaScript, PHP og Python
- HMAC-validering — Implementeringsdetaljer på serversiden, sikkerhedsfunktioner og fejlsvar
Vejledninger
-
JavaScript/Node.js-vejledning — Omfattende guide, der dækker:
- Hurtig start (5 minutter)
- Next.js App Router (3 mønstre)
- Next.js Pages Router
- Express.js-backend
- Ren Node.js
- Frontend-integrationsmønstre (SSG, SSR, Client-Side)
- Test og fejlfinding
- Almindelige faldgruber
Hurtig reference
Algoritme
method = "GET"
path = "/api/v1/og"
canonicalQuery = every query param EXCEPT `s` (including `key`): array values sorted too; each pair rfc3986Encode(key)=rfc3986Encode(value); pairs sorted lexicographically and joined with "&"
message = method + path + "\n" + canonicalQuery
signature = hex(HMAC-SHA256(message, hmac_secret))
URL: /api/v1/og?title=Hello&key=sk_quick_123abc&s=<signature>
Forespørgselsparametre
| Parameter | Beskrivelse | Eksempel |
|---|---|---|
key |
Fuld API-nøgle | sk_quick_123abc |
s |
HMAC-SHA256-signatur (64 hex-tegn) | 9f8a1b2c3d4e... |
Fejlkoder
| Kode | HTTP-status | Beskrivelse |
|---|---|---|
missing_signature |
401 | Manglende key- eller s-parameter |
invalid_signature |
401 | Signaturen stemmer ikke |
🎯 Anvendelsestilfælde
Blogindlæg
Generér dynamiske OG-billeder til blogindlæg:
const ogUrl = generateSignedOgUrl({
template: "blog",
title: post.title,
subtitle: post.excerpt,
author: post.author.name,
});
// <meta property="og:image" content="{ogUrl}" />
E-handelsprodukter
Opret OG-billeder til produktsider:
const ogUrl = generateSignedOgUrl({
template: "ecommerce",
title: product.name,
price: product.price,
image: product.image,
});
Udtalelser
Generér OG-billeder til udtalelsescitater:
const ogUrl = generateSignedOgUrl({
template: "testimonial",
author_name: user.name,
author_avatar: user.avatarUrl,
quote: user.bio,
});
🔐 Sikkerhed
Bedste praksis
- Opbevar hemmeligheder sikkert — Brug miljøvariabler eller en hemmelighedsmanager
- Udsæt aldrig HMAC-hemmeligheden i klientkode — Signér kun på serveren
- Brug HTTPS — Forhindrer MITM-angreb
- Roter hemmeligheder jævnligt — Især hvis de er kompromitteret
- Overvåg fejlede signaturer — Gentagne fejl kan indikere angreb
- Isolering pr. bruger — Hver API-nøgle har sin egen HMAC-hemmelighed
Sådan får du din HMAC-hemmelighed
- Gå til Dashboard → API-nøgler
- Opret en ny API-nøgle
- Kopiér HMAC-hemmeligheden (vises kun én gang!)
- Gem den i miljøvariabler
# .env
FASTOG_HMAC_SECRET=<your-64-char-hex-secret>
🧪 Testning
Generér test-URL
# Node.js
node -e "
const crypto = require('crypto');
const enc = (s) => encodeURIComponent(s).replace(/[!'()*]/g, (c) => '%' + c.charCodeAt(0).toString(16).toUpperCase());
const all = { title: 'Test', key: 'sk_quick_123abc' };
const pairs = [];
for (const [k, v] of Object.entries(all)) for (const vv of Array.isArray(v) ? v : [v]) pairs.push(enc(k) + '=' + enc(vv));
pairs.sort();
const canonical = pairs.join('&');
const sig = crypto.createHmac('sha256', 'YOUR_HMAC_SECRET').update('GET/api/v1/og\n' + canonical).digest('hex');
console.log('https://fastog.com/api/v1/og?title=Test&key=sk_quick_123abc&s=' + sig);
"
Test med curl
curl "https://fastog.com/api/v1/og?title=Test&key=sk_quick_123abc&s=<signature>"
Forventede svar
- ✅ Gyldig signatur → Returnerer OG-billede (eller 422, hvis skabelonparametrene er ugyldige)
- ❌ Ugyldig signatur →
{"code": "invalid_signature"} - ❌ Manglende parametre →
{"code": "missing_signature"}
🛠 Fejlfinding
Signatur matcher ikke
- Bekræft, at du bruger den korrekte HMAC-hemmelighed (tjek API-nøglen i dashboardet)
- Tjek den kanoniske forespørgsel: alle forespørgselsparametre undtagen
s(inklusivekey), værdier rfc3986-kodet, nøgler sorteret leksikografisk - Bekræft, at signaturen er små bogstaver i hex (64 tegn)
📖 Yderligere ressourcer
- API-reference — Komplet API-dokumentation
- Sikkerhedsbedste praksis — Detaljeret sikkerhedsguide
- Vidensbase — Tekniske implementeringsdetaljer
❓ FAQ
Spørgsmål: Hvorfor forespørgselsparametre i stedet for headere?
Svar: OG-billeder hentes af sociale netværkscrawlere (LinkedIn, Twitter, Facebook), som ikke sender brugerdefinerede headere. Signaturen SKAL være i URL'en.
Spørgsmål: Kan jeg bruge den samme signatur til flere forespørgsler?
Svar: Ja. En signatur beregnes ud fra den nøjagtige forespørgsel (minus s), så den samme signerede URL forbliver gyldig, så længe parametrene ikke ændres. Ændrer du en parameter (inklusive key), skal du underskrive igen.
Spørgsmål: Skal jeg underskrive forespørgsler for alle skabeloner?
Svar: Ja. Alle forespørgsler til /api/v1/og kræver HMAC-signaturer.
Spørgsmål: Hvad sker der, hvis min HMAC-hemmelighed bliver kompromitteret?
Svar: Tilbagekald API-nøglen i dashboardet, og opret en ny. Hver API-nøgle har sin egen HMAC-hemmelighed.
Spørgsmål: Kan jeg deaktivere HMAC-validering for interne tjenester?
Svar: Kontakt support for brugerdefinerede løsninger. HMAC-validering er obligatorisk for alle offentlige API-endepunkter.
🆘 Support
Har du brug for hjælp?
- Se JavaScript-vejledningen for komplette kodeeksempler
- Gennemgå HMAC-signaturguiden for detaljer om algoritmen
- Kontakt support på [email protected]
Relateret
- Dokumentation — Alle FastOG-guides og referencer
- Gratis OG-billedtester — Forhåndsvisning uden konto
- Hurtig start-guide — Kom i gang på 5 minutter
- HMAC-signaturguide — Algoritmedetaljer
- HMAC-validering — Server-side validering