Uso de cookies firmadas - Amazon CloudFront

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de cookies firmadas

CloudFront Las cookies firmadas te permiten controlar quién puede acceder a tu contenido cuando no quieres cambiar tus URL actuales o si quieres dar acceso a varios archivos restringidos, por ejemplo, todos los archivos del área de suscriptores de un sitio web. En este tema se explica qué tomar en cuenta al utilizar cookies firmadas y describe cómo configurarlas mediante políticas predefinidas o personalizadas.

Elegir entre políticas predefinidas y personalizadas para cookies firmadas

Al crear una cookie firmada, se escribe una instrucción de política en formato JSON que especifica las restricciones en la cookie firmada, por ejemplo, el tiempo de validez de la cookie. Puede utilizar políticas predefinidas o personalizadas. En la siguiente tabla se comparan las políticas predefinidas y las personalizadas:

Descripción Política predefinida Política personalizada

Puede reutilizar la instrucción de la política con varios archivos. Para reutilizar la instrucción de política, debe utilizar caracteres comodín en el objeto Resource. Para obtener más información, consulte Valores que se especifican en la instrucción de política de una política personalizada para cookies firmadas).

No

Puede especificar la fecha y la hora a la que los usuarios pueden empezar a obtener acceso a su contenido.

No

Sí (opcional)

Puede especificar la fecha y la hora a la que los usuarios dejan de obtener acceso a su contenido.

Puede especificar la dirección IP o a un rango de direcciones IP de los usuarios que pueden obtener acceso a su contenido.

No

Sí (opcional)

Para obtener información acerca de cómo crear cookies firmadas mediante una política predefinida, consulte Establecer cookies firmadas mediante una política predefinida.

Para obtener información acerca de cómo crear cookies firmadas mediante una política personalizada, consulte Establecer cookies firmadas mediante una política personalizada.

Cómo funcionan las cookies firmadas

A continuación, te explicamos cómo CloudFront configuras las cookies firmadas y cómo CloudFront responde cuando un usuario envía una solicitud que contiene una cookie firmada.

  1. En tu CloudFront distribución, especifica uno o más grupos de claves de confianza, que contienen las claves públicas que CloudFront puedes usar para verificar la firma de la URL. Se utilizan las claves privadas correspondientes para firmar las URL.

    Para obtener más información, consulte Especificación de los signatarios que pueden crear URL firmadas y cookies firmadas.

  2. Desarrolle una aplicación para determinar si un usuario debe obtener acceso a su contenido y, en caso de que sí, que envíe 3 encabezados Set-Cookie al espectador. (Cada Set-Cookie encabezado solo puede contener un par nombre-valor, y una cookie CloudFront firmada requiere tres pares nombre-valor). Debe enviar los encabezados Set-Cookie al espectador antes de que el usuario solicite su contenido privado. Si configura un periodo de vencimiento corto en la cookie, le recomendamos enviar tres encabezados Set-Cookie más en respuesta a solicitudes posteriores, de modo que el usuario continúe teniendo acceso.

    Por lo general, la CloudFront distribución tendrá al menos dos comportamientos de caché: uno que no requiere autenticación y otro que sí lo requiere. La página de error de la parte segura del sitio incluye un redirector o un enlace a una página de inicio de sesión.

    Si configura la distribución para almacenar en caché los archivos en función de las cookies, CloudFront no almacenará en caché archivos independientes en función de los atributos de las cookies firmadas.

  3. Un usuario inicia sesión en su sitio web y paga por el contenido o cumple algún otro requisito para el acceso.

  4. Su aplicación devuelve los encabezados Set-Cookie en la respuesta, y el espectador almacena los pares nombre-valor.

  5. El usuario solicita un archivo.

    El navegador del usuario o cualquier otro espectador obtiene los pares nombre-valor del paso 4 y los añade a la solicitud en un encabezado Cookie. Esta es la cookie firmada.

  6. CloudFront usa la clave pública para validar la firma de la cookie firmada y para confirmar que la cookie no ha sido manipulada. Si la firma no es válida, se rechaza la solicitud.

    Si la firma de la cookie es válida, CloudFront consulta la declaración de política de la cookie (o crea una si utilizas una política preestablecida) para confirmar que la solicitud sigue siendo válida. Por ejemplo, si especificó una fecha y hora de inicio y finalización para la cookie, CloudFront confirma que el usuario está intentando acceder a su contenido durante el período de tiempo al que desea permitir el acceso.

    Si la solicitud cumple los requisitos de la declaración de política, CloudFront muestra tu contenido como lo hace con el contenido no restringido: determina si el archivo ya está en la memoria caché perimetral, reenvía la solicitud al origen si es necesario y devuelve el archivo al usuario.

Si especifica el parámetro Domain en un encabezado Set-Cookie, especifique el valor de la forma más precisa posible para reducir el acceso potencial por parte de alguien con el mismo nombre de dominio raíz. Por ejemplo, app.example.com es mejor que example.com, especialmente si no controla example.com. Esto ayuda a impedir que alguien obtenga acceso a su contenido desde www.example.com.

Para evitar este tipo de ataques, haga lo siguiente:

  • Excluya los atributos de cookies Expires y Max-Age para que el encabezado Set-Cookie cree una cookie de sesión. Las cookies de sesión se eliminan automáticamente cuando el usuario cierra el navegador, lo que reduce la posibilidad de alguien obtenga acceso no autorizado a su contenido.

  • Incluya el atributo Secure para que la cookie se cifre cuando un espectador la incluya en una solicitud.

  • De ser posible, utilice una política personalizada e incluya la dirección IP del espectador.

  • En el atributo CloudFront-Expires, especifique el menor tiempo de vencimiento posible pero razonable en función de por cuánto tiempo desea que los usuarios puedan obtener acceso a su contenido.

Para determinar si una cookie firmada sigue siendo válida, CloudFront comprueba la fecha y la hora de caducidad de la cookie en el momento de la solicitud HTTP. Si un cliente comienza a descargar un archivo grande inmediatamente antes de la fecha de vencimiento, la descarga se realizará por completo incluso si se sobrepasa la hora de vencimiento durante la descarga. Si la conexión TCP se interrumpe y el cliente intenta reiniciar la descarga después de la fecha de vencimiento, la descarga fallará.

Si un cliente utiliza rangos GET para obtener un archivo en partes más pequeñas, cualquier solicitud GET que se produzca después de la fecha de vencimiento no se procesará. Para obtener más información acerca de Range GET, consulte Cómo CloudFront procesa las solicitudes parciales de un objeto (range GET).

Código de muestra y herramientas de terceros

El código de muestra para contenido privado solo muestra cómo crear firmas para URL firmadas. Sin embargo, el proceso de creación de una firma para una cookie firmada es muy similar, así que gran parte del código de muestra es aplicable. Para obtener más información, consulte los siguientes temas: