Podpisane adresy URL obrazów OG
Podpisany adres URL obrazu OG to adres, którego parametry są chronione podpisem HMAC-SHA256, dzięki czemu tylko Ty (oraz kod posiadający Twój sekret) możesz żądać renderów wliczanych do Twojego miesięcznego limitu. FastOG podpisuje treść — identyczne parametry zawsze generują identyczny, zbuforowany adres URL — co zarówno chroni Twój limit, jak i czyni buforowanie deterministycznym.
Dlaczego warto podpisywać adresy URL obrazów OG
Endpoint obrazów OG, który renderuje dowolny tekst z nieuwierzytelnionego adresu URL, to darmowa farma renderowania, z której każdy może korzystać. W usłudze opartej na subskrypcji oznacza to, że każdy mógłby spalać Twój limit. Podpisywanie każdego adresu URL tajnym kluczem znanym tylko Twojemu backendowi blokuje każde nieautoryzowane żądanie przy pierwszym (niebuforowanym) pobraniu, podczas gdy legalne, buforowane adresy URL działają nadal.
Jak działa podpisywanie treści
- Budujesz kanoniczny ciąg zapytania: każdy parametr (z wyjątkiem podpisu), posortowany i zakodowany zgodnie z RFC-3986.
- Obliczasz
HMAC_SHA256(secret, "GET/api/v1/og\n" + canonical). - Dołączasz podpis jako parametr
s.
Wiadomość nie zawiera znacznika czasu, więc URL jest stabilny: te same parametry → ten sam URL → ten sam wpis w pamięci podręcznej.
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
Kompromis, który ludzie źle rozumieją
| Obawa | Rzeczywistość |
|---|---|
| „Podpisany URL wygaśnie” | Nie — jest podpisany pod kątem treści i ważny do czasu rotacji sekretu |
| „Zmodyfikowany URL psuje cache” | Nie — fałszywy s dostaje tylko 401 przy braku trafienia w cache; obrazy z cache i tak się zwracają |
| „Potrzebuję znaczników czasu dla bezpieczeństwa” | Podpisywanie treści wystarczy, aby powstrzymać nadużycia limitu; zegar nie jest potrzebny |
Jednoplikowe SDK
FastOG dostarcza pojedynczy plik signera (signer) dla każdego języka (zero zależności), dzięki czemu nigdy nie musisz ręcznie implementować HMAC. Pobierz go ze strony SDK lub curl bezpośrednio z CDN:
curl -O https://fastog.com/sdk/node.js
FAQ
Czy podpisane adresy URL kiedykolwiek wygasają?
Nie domyślnie — pozostają ważne, dopóki nie zmienisz sekretu HMAC klucza API. Podpisane treściowo, a nie czasowo.
Czy ktoś inny może wykorzystać mój limit, zgadując adres URL?
Nie. Potrzebuje twojego sekretu HMAC, aby utworzyć prawidłowy podpis; bez niego niebuforowane renderowania zwracają 401 invalid_signature.
Czy podpisuję adres URL w przeglądarce?
Nie. Podpisuj po stronie serwera (lub w funkcji brzegowej), gdzie sekret nigdy nie trafia do klienta. Wyrenderowany adres URL obrazu jest bezpieczny do umieszczenia w publicznym <head>.