# 'humble' (Analizador de cabeceras HTTP)
# https://github.com/rfc-st/humble/
#
# Licencia MIT
#
# Copyright (c) 2020-2026 Rafa 'Bluesman' Faura (rafael.fcucalon@gmail.com)
#
# Por la presente se concede permiso, libre de cargos, a cualquier persona que
# obtenga una copia de este software y de los archivos de documentación
# asociados (el "Software"), a utilizar el Software sin restricción,
# incluyendo sin limitación los derechos a usar, copiar, modificar, fusionar,
# publicar, distribuir, sublicenciar, y/o vender copias del Software, y a
# permitir a las personas a las que se les proporcione el Software a hacer lo
# mismo, sujeto a las siguientes condiciones:

# El aviso de copyright anterior y este aviso de permiso se incluirán en todas
# las copias o partes sustanciales del Software.

# EL SOFTWARE SE PROPORCIONA "COMO ESTÁ", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O
# IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A GARANTÍAS DE COMERCIALIZACIÓN,
# IDONEIDAD PARA UN PROPÓSITO PARTICULAR E INCUMPLIMIENTO. EN NINGÚN CASO LOS
# AUTORES O PROPIETARIOS DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGUNA
# RECLAMACIÓN, DAÑOS U OTRAS RESPONSABILIDADES, YA SEA EN UNA ACCIÓN DE CONTRATO,
# AGRAVIO O CUALQUIER OTRO MOTIVO, DERIVADAS DE, FUERA DE O EN CONEXIÓN CON EL
# SOFTWARE O SU USO U OTRO TIPO DE ACCIONES EN EL SOFTWARE.

[Sobre esta herramienta]

'humble' es una herramienta estricta al comprobar cabeceras de respuesta HTTP
y sus valores; algunas de estas cabeceras pueden ser experimentales y quizás no
estés de acuerdo con todas las advertencias tras un análisis.

!Y eso está bien :)!; nunca se debe confiar ciegamente en los resultados de las
herramientas de seguridad: se debe realizar un trabajo adicional para decidir si el
riesgo reportado es inexistente, potencial o real en base a la URL analizada
(su exposición, entorno, etc.).


[Notas y comprobaciones asociadas]

Ordenadas de la peor a la mejor; la primera condición que se cumpla, empezando
por arriba, determina la nota:

E:  Sin 'Cabeceras habilitadas' en el análisis.
D:  Uno o más 'Protocolos/Cabeceras obsoletas o inseguras' en el análisis.
C:  Una o más 'Cabeceras no habilitadas' en el análisis.
B:  Una o más 'Huella digital por cabeceras' en el análisis.
A:  Ninguna de las anteriores, pero una o más 'Cabeceras sin valor' en el análisis.
A+: Ninguna de las anteriores, y tampoco 'Cabeceras sin valor'.

Un único hallazgo en una comprobación basta para fijar su nota, con
independencia del resultado de las comprobaciones inferiores.

Ficheros fuente de las comprobaciones:

/additional/security.txt    ('Cabeceras habilitadas')
/additional/insecure.txt    ('Protocolos/Cabeceras obsoletas o inseguras')
/additional/missing.txt     ('Cabeceras no habilitadas'; lista de referencia)
/additional/fingerprint.txt ('Huella digital por cabeceras')

'Cabeceras sin valor' no tiene fichero fuente: abarca cualquier cabecera de
respuesta HTTP cuyo valor esté vacío.


[Mejorando la nota]

* 'humble' sigue de forma estricta la documentación y especificaciones de
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers y https://www.w3.org/.
Algunas cabeceras HTTP, y sus valores requeridos, distinguen entre mayúsculas y
minúsculas y este puede ser motivo por el cual se muestren advertencias tras el análisis.

* Evalúa las notas en relación a la exposición de la URL, su criticidad
y la naturaleza de la cabecera HTTP: https://mdn.io/Experimental_deprecated_obsolete.

* Usa el parámetro '-s', o el fichero 'humble.skip', para excluir cabeceras HTTP
del análisis (las cabeceras excluidas se mostrarán en los resultados).

* No te obsesiones :). Mantén una postura de seguridad tan sólida como la URL lo
requiera, y mantenla documentada y al día.
