Secure Link#
El módulo permite verificar la autenticidad de los enlaces solicitados, proteger recursos contra accesos no autorizados y limitar la vida útil de los enlaces.
La autenticidad de un enlace solicitado se verifica comparando el valor de suma de comprobación pasado en una solicitud con el valor calculado para la solicitud. Si un enlace tiene una vida útil limitada y el tiempo ha expirado, el enlace se considera caducado. El estado de estas comprobaciones está disponible en la variable $secure_link.
El módulo implementa dos modos de operación alternativos. El primer modo se habilita mediante la directiva secure_link_secret y permite verificar la autenticidad de los enlaces solicitados y protegerlos contra accesos no autorizados. El segundo modo se habilita mediante las directivas secure_link y secure_link_md5 y también permite limitar la vida útil del enlace.
Al compilar desde el código fuente,
este módulo no se compila por defecto;
debe habilitarse con la
opción de compilación --with-http_secure_link_module
.
En paquetes e imágenes de nuestros repositorios,
el módulo está incluido en la compilación. Define una cadena con variables de las que se extraerá el valor de suma de comprobación y la vida útil de un enlace. Las variables utilizadas en una expresión generalmente están asociadas con una solicitud; ver ejemplo a continuación. El valor de suma de comprobación extraído de la cadena se compara con el valor hash MD5 de la expresión definida por la directiva secure_link_md5. Si las sumas de comprobación no coinciden, la variable $secure_link se establece en una cadena vacía. Si las sumas de comprobación coinciden, se verifica la vida útil del enlace. Si el enlace tiene una vida útil limitada y el tiempo ha expirado, la variable $secure_link se establece en Si un enlace tiene una vida útil limitada, el tiempo de expiración se establece en segundos desde la Época (1 de enero de 1970 00:00:00 GMT). El valor se especifica en la expresión después del hash MD5 y está separado por una coma. El tiempo de expiración pasado en una solicitud está disponible a través de la variable $secure_link_expires para su uso en la directiva secure_link_md5. Si no se especifica el tiempo de expiración, un enlace tiene una vida útil ilimitada. Define una expresión para la cual se calculará el valor hash MD5 y se comparará con el valor pasado en una solicitud. La expresión debe contener la parte segura de un enlace (recurso) y un ingrediente secreto. Si el enlace tiene una vida útil limitada, la expresión también debe contener $secure_link_expires. Para evitar el acceso no autorizado, la expresión puede contener información sobre el cliente, como su dirección y versión del navegador. Ejemplo: El enlace "/s/link?md5=_e4Nc3iduzkWRm01TBBNYw&expires=2147483647" restringe el acceso a "/s/link" para el cliente con la dirección IP 127.0.0.1. El enlace también tiene una vida útil limitada hasta el 19 de enero de 2038 (GMT). En UNIX, el valor del argumento md5 de la solicitud se puede obtener como: Define una palabra secreta utilizada para verificar la autenticidad de los enlaces solicitados. El URI completo de un enlace solicitado se ve de la siguiente manera: donde hash es una representación hexadecimal del hash MD5 calculado para la concatenación del enlace y la palabra secreta, y prefijo es una cadena arbitraria sin barras. Si el enlace solicitado pasa la verificación de autenticidad, la variable $secure_link se establece en el enlace extraído del URI de la solicitud. De lo contrario, la variable $secure_link se establece en una cadena vacía. Ejemplo: Una solicitud de "/p/5e814704a28d9bc1914ff19fa0c4a00a/link" será redirigida internamente a "/secure/link". En UNIX, el valor hash para este ejemplo se puede obtener como: El estado de la verificación de un enlace. El valor específico depende del modo de operación seleccionado. El tiempo de vida de un enlace pasado en una solicitud; destinado a ser utilizado solo en la directiva secure_link_md5.Directivas#
secure_link#
0
. De lo contrario, se establece en 1
. El valor hash MD5 pasado en una solicitud está codificado en base64url.secure_link_md5#
location /s/ {
secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri$remote_addr secret";
if ($secure_link = "") {
return 403;
}
if ($secure_link = "0") {
return 410;
}
# ...
}
echo -n '2147483647/s/link127.0.0.1 secret' | \
openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =
secure_link_secret#
/prefijo/hash/enlace
location /p/ {
secure_link_secret secret;
if ($secure_link = "") {
return 403;
}
rewrite ^ /secure/$secure_link;
}
location /secure/ {
internal;
}
echo -n 'linksecret' | openssl md5 -hex
Variables Incorporadas#
$secure_link
#$secure_link_expires
#