URLs de Imagem OG Assinadas
Uma URL de imagem OG assinada é uma URL cujos parâmetros são protegidos com uma assinatura HMAC-SHA256, de modo que apenas você (e o código que detém seu segredo) possa solicitar renderizações que contam contra sua cota mensal. A FastOG assina o conteúdo — parâmetros idênticos sempre produzem a mesma URL em cache — o que protege sua cota e torna o cache determinístico.
Por que assinar URLs de imagem OG
Um endpoint de imagem OG que renderiza texto arbitrário a partir de uma URL não autenticada é uma fazenda de renderização gratuita que qualquer pessoa pode acessar. Em um serviço baseado em assinatura, isso significa que qualquer pessoa poderia queimar seu saldo. Assinar cada URL com um segredo que apenas seu backend conhece bloqueia toda solicitação não autorizada na primeira busca (sem cache), enquanto URLs legítimas e em cache continuam funcionando.
Como funciona a assinatura de conteúdo
- Você constrói a string de consulta canônica: cada parâmetro (exceto a assinatura), ordenado e codificado conforme RFC-3986.
- Você calcula
HMAC_SHA256(secret, "GET/api/v1/og\n" + canonical). - Você anexa a assinatura como o parâmetro
s.
A mensagem não inclui timestamp, então a URL é estável: mesmos parâmetros → mesma URL → mesma entrada de 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
A troca que as pessoas entendem errado
| Preocupação | Realidade |
|---|---|
| "Uma URL assinada vai expirar" | Não — ela é assinada por conteúdo, válida até você rotacionar o segredo |
| "Uma URL adulterada quebra o cache" | Não — um s inválido só recebe 401 em uma falha de cache; imagens em cache são retornadas mesmo assim |
| "Preciso de timestamps por segurança" | A assinatura por conteúdo é suficiente para impedir abuso de cota; não é necessário relógio |
SDKs de arquivo único
O FastOG fornece um único arquivo de assinatura por linguagem (zero dependências), para que você nunca precise implementar HMAC manualmente. Baixe da página de SDKs ou curl diretamente do CDN:
curl -O https://fastog.com/sdk/node.js
FAQ
URLs assinadas expiram em algum momento?
Não por padrão — elas permanecem válidas até você rotacionar o segredo HMAC da chave de API. Assinadas por conteúdo, não por tempo.
Outra pessoa pode gastar minha cota adivinhando uma URL?
Não. Ela precisa do seu segredo HMAC para formar uma assinatura válida; sem ele, renderizações não armazenadas em cache retornam 401 invalid_signature.
Eu assino a URL no navegador?
Não. Assine no lado do servidor (ou em uma função de borda), onde o segredo nunca chega ao cliente. A URL da imagem renderizada é segura para colocar no seu <head> público.