Protección de las cargas de webhook con un secreto
Una vez que la función esté configurada para recibir las cargas, escuchará cualquier carga que se envíe al punto de conexión que ha configurado. 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 dirección de su departamento de TI está satisfecha con la función que ha desencadenado el webhook que se ha creado en una aplicación de Azure Functions. Esa función analiza toda la información sobre las actualizaciones del sitio wiki de la empresa y la envía a las empresas 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, para establecer el campo secreto, vaya al repositorio donde ha configurado el webhook y, después, 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 utilizando el secreto y asegurarse de que coincide con el hash del 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=
.