Hawk is an HTTP authentication scheme providing mechanisms for making authenticated HTTP requests with partial cryptographic verification of the request and response, covering the HTTP method, request URI, host, and optionally the request payload. Hawk used a regular expression to parse `Host` HTTP header (`Hawk.utils.parseHost()`), which was subject to regular expression DoS attack - meaning each added character in the attacker's input increases the computation time exponentially. `parseHost()` was patched in `9.0.1` to use built-in `URL` class to parse hostname instead. `Hawk.authenticate()` accepts `options` argument. If that contains `host` and `port`, those would be used instead of a call to `utils.parseHost()`.
Hawk es un esquema de autenticación HTTP que proporciona mecanismos para realizar peticiones HTTP autenticadas con verificación criptográfica parcial de la petición y la respuesta, cubriendo el método HTTP, el URI de la petición, el host y, opcionalmente, la carga útil de la petición. Hawk usaba una expresión regular para analizar el encabezado HTTP "Host" ("Hawk.utils.parseHost()"), que estaba sujeta a un ataque DoS de expresión regular - lo que significa que cada carácter añadido en la entrada del atacante aumenta el tiempo de cálculo exponencialmente. ParseHost()" ha sido corregido en versión "9.0.1" para usar la clase "URL' incorporada para analizar el nombre de host. Hawk.authenticate()" acepta el argumento "options". Si éste contiene "host" y "port", serán usadas en lugar de una llamada a "utils.parseHost()"