Protección de las cargas de webhook con un secreto

Completado

Una vez configurada la función para recibir cargas, escucha cualquier carga enviada al punto de conexión que configuró. Por motivos de seguridad, puede limitar las solicitudes a aquellas procedentes de GitHub. Existen algunas maneras de hacerlo. Por ejemplo, podría elegir aprobar las solicitudes procedentes de la dirección IP de GitHub. Un método más fácil consiste en configurar un token secreto y validar la solicitud usando este token.

En el escenario de ejemplo, la administración del departamento de TI está satisfecha con la función desencadenada por un webhook que ha creado en una aplicación de Azure Functions. Toda la información relacionada con las actualizaciones de la wiki de la empresa se analiza mediante esa función y se envía a la empresa cada vez que se desencadena el evento Gollum . La dirección ha preguntado lo segura que es la información que se pasa desde GitHub. Le han pedido que encuentre una forma de proteger la información y que verifique que GitHub está enviando actualizaciones.

En esta unidad, obtendrá información sobre cómo proteger la carga de webhook con un secreto y validar las cargas de GitHub.

Secretos de webhook

Establecer un secreto de webhook le permite asegurarse de que las solicitudes POST enviadas a la URL de carga sean de GitHub. Cuando establezca un secreto, recibirá el encabezado x-hub-signature en la solicitud POST del webhook.

En GitHub, puede establecer el campo secreto ; para ello, vaya al repositorio donde ha configurado el webhook y edite el webhook. Le mostraremos cómo hacerlo en nuestro ejemplo en el ejercicio siguiente.

Validación de cargas desde GitHub

Cuando se establece su token secreto, GitHub lo utiliza para crear una firma de hash para cada carga. Esta firma de hash se pasa junto con cada solicitud en los encabezados como x-hub-signature.

Cuando la función recibe una solicitud, debe calcular el hash mediante el secreto y asegurarse de que coincide con el hash en el encabezado de solicitud. GitHub usa una síntesis hexadecimal HMAC SHA1 para calcular el hash, por lo que debe calcular el hash de esta misma forma, mediante la clave de su secreto y el cuerpo de la carga. La firma del hash empieza con el texto sha1=.