Tema

URLs de imagen OG firmadas

Una URL de imagen OG firmada es una URL cuyos parámetros están protegidos con una firma HMAC-SHA256, de modo que solo tú (y el código que posee tu secreto) puedes solicitar renders que cuenten contra tu cuota mensual. FastOG firma el contenido: parámetros idénticos siempre producen la misma URL en caché, lo que protege tu cuota y hace que el almacenamiento en caché sea determinista.

Por qué firmar las URLs de las imágenes OG

Un endpoint de imágenes OG que renderiza texto arbitrario desde una URL no autenticada es una granja de renderizado gratuita que cualquiera puede usar. En un servicio basado en suscripción, eso significa que cualquiera podría consumir tu saldo. Firmar cada URL con un secreto que solo conoce tu backend bloquea toda solicitud no autorizada en la primera petición (sin caché), mientras que las URLs legítimas y cacheadas siguen funcionando.

Cómo funciona la firma de contenido

  1. Construyes la cadena de consulta canónica: cada parámetro (excepto la firma), ordenado y codificado según RFC-3986.
  2. Calculas HMAC_SHA256(secret, "GET/api/v1/og\n" + canonical).
  3. Añades la firma como el parámetro s.

El mensaje no incluye una marca de tiempo, por lo que la URL es estable: mismos parámetros → misma URL → misma entrada en caché.

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

La disyuntiva que la gente entiende mal

Preocupación Realidad
"Una URL firmada caducará" No — está firmada por contenido y es válida hasta que rote la clave secreta
"Una URL manipulada rompe la caché" No — un s inválido solo recibe un 401 en un fallo de caché; las imágenes cacheadas se devuelven igualmente
"Necesito marcas de tiempo por seguridad" La firma por contenido basta para evitar el abuso de cuota; no se necesita reloj

SDK de un solo archivo

FastOG incluye un único archivo de firma por lenguaje (cero dependencias) para que nunca tengas que implementar HMAC manualmente. Descárgalo desde la página del SDK o curl directamente desde el CDN:

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

Preguntas frecuentes

¿Caducan alguna vez las URL firmadas?

No por defecto: siguen siendo válidas hasta que rote el secreto HMAC de la clave de API. Están firmadas por contenido, no por tiempo.

¿Puede otra persona gastar mi cuota adivinando una URL?

No. Necesita tu secreto HMAC para formar una firma válida; sin él, las representaciones no almacenadas en caché devuelven 401 invalid_signature.

¿Firmo la URL en el navegador?

No. Firma en el servidor (o en una función de edge) donde el secreto nunca llegue al cliente. La URL de la imagen renderizada es segura para ponerla en tu <head> público.

Pruébalo gratis: no se requiere registro

Previsualiza y prueba imágenes OG dinámicas en segundos.

Abrir el probador gratuito de imágenes OG

A BeCaSimulations site