Loading...

Ayuda de CDN.com.tr

URLs firmadas: enlaces que expiran

Proteja un archivo para que solo se pueda obtener con una firma que usted genera, válida hasta el momento que elija. Las solicitudes sin firmar reciben 403, las expiradas reciben 410.

URLs firmadas: enlaces que expiran

Proteja un archivo para que solo se pueda obtener con una firma que usted genera, válida hasta el momento que elija. Las solicitudes sin firmar reciben 403, las expiradas reciben 410.

Siguiente guía recomendada

Ruta en el panel

  1. Management Panel
  2. Delivery Rules
  3. Enlaces con expiración
  4. Secreto

Requisitos previos

  • Una cuenta con un hostname de entrega
  • Un lugar en su aplicación donde generar enlaces

Modelo de decisión

¿A nivel de cuenta o en una sola ruta?

La opción existe en ambos niveles. A nivel de cuenta significa que cada solicitud necesita una firma, lo que rompe las páginas normales. Una regla para /downloads o /video es lo que la mayoría de las personas quiere.

  • A nivel de cuenta: solo para cuentas que no sirven más que archivos protegidos
  • Por regla: la opción habitual

¿Cuánto tiempo debe vivir un enlace?

Lo bastante corto para que un enlace filtrado no sirva de nada, y lo bastante largo para que una conexión lenta pueda terminar la descarga. Minutos para un documento, horas para un video grande.

  • Documentos e imágenes: 5-15 minutos
  • Video grande o archivos comprimidos: 1-6 horas

Guía paso a paso

1

Actívelo para una sola ruta

Abra Delivery Rules, añada o edite la regla que cubre la ruta que desea proteger, active la opción de enlaces con expiración y configure un secreto. Use una cadena larga y aleatoria, no una palabra.

  • Delivery Rules → la regla de /downloads → active los enlaces con expiración → pegue un secreto aleatorio → Aplicar cambios

Resultado esperado: Después de que la configuración llegue a los edges, una solicitud simple a esa ruta devuelve 403.

2

Genere un enlace en su aplicación

La firma es la forma base64url del MD5 de la expiración, la ruta y el secreto unidos, con un solo espacio antes del secreto. Añádala como md5 y la expiración como expires.

  • PHP: $expires = time() + 600; $token = rtrim(strtr(base64_encode(md5($expires . $uri . " " . $secret, true)), "+/", "-_"), "=");
  • Then: https://cdn.example.com/downloads/file.zip?md5=TOKEN&expires=EXPIRES

Resultado esperado: El enlace se sirve hasta que pasa la expiración.

3

Verifique los tres resultados

Compruebe los casos de fallo además del de éxito, porque son los que su equipo de soporte verá en los reportes.

  • Solicítelo sin parámetros (403)
  • Solicítelo con una expiración pasada (410)
  • Solicite un enlace válido (200)

Resultado esperado: Tres respuestas diferentes, para que un reporte de usuario pueda clasificarse solo por el código de estado.

Verificación

  • curl -o /dev/null -w "%{http_code}" "https://cdn.example.com/downloads/file.zip" → 403
  • curl -o /dev/null -w "%{http_code}" "https://cdn.example.com/downloads/file.zip?md5=TOKEN&expires=PAST" → 410

Casos de uso

Vende un video, un informe o una descarga, y el enlace no debe poder compartirse indefinidamente. La protección de hotlink impide que otros sitios incrusten sus archivos; una URL firmada va más allá y hace que cada enlace sea personal y limitado en el tiempo.

Flujo de trabajo rápido

  1. Delivery Rules → seleccione la cuenta (o una sola regla para una ruta) → active la opción de enlaces con expiración y configure un secreto.
  2. Su aplicación construye el enlace: aplica un hash a la hora de expiración, la ruta y el secreto, y luego añade la firma y la expiración a la URL.
  3. El edge verifica la firma antes que cualquier otra cosa. Los enlaces válidos se sirven y se almacenan en caché con normalidad; los inválidos nunca llegan a su origin.
  4. Rote el secreto cuando se filtre o cuando alguien se vaya. Todos los enlaces firmados con el secreto anterior dejan de funcionar de inmediato.

Verificaciones

  • Un enlace sin los parámetros devuelve 403.
  • Un enlace cuya expiración ya pasó devuelve 410 — un código distinto, para que sus propios logs distingan los dos casos.
  • Un enlace con una firma correcta se sirve, y la respuesta se almacena en caché como cualquier otra.