Estoy leyendo mucho sobre la implementación de restricciones de seguridad en una API REST.
Hay muchos métodos, algunos mejores que otros para aplicaciones de 3party o para consumir mi propia API.
- HTTP Basic + TLS (con claves)
- HTTP Digest + TLS
- OAuth 1.0a, 2.0
- Application-only-auth (con claves) link
- Amazon Signature Versión 4 Enlace
Para consumir mi propia API, tengo 3 opciones (de bajo a alto grado de dificultad para implementar, ¡siempre utilizando TLS!):
- HTTP Basic + TLS (con claves)
- HTTP Digest + TLS
- Application-only-auth (con claves)
- Amazon Signature Version 4
El único beneficio del resumen sobre Basic + tls es que la contraseña no se transfiere en texto sin formato sino en un hash MD5.
Pero de acuerdo con kbcert y wikipedia dicen que no se debe usar MD5 (ataques de colisión).
Mi pregunta es: si la seguridad de MD5 se ve comprometida (hoy y en un futuro próximo) 2. HTTP Digest + TLS no es una opción viable para consumir mi propia API y solo tengo otras opciones "más" seguras (1, 3, 4)?
Sé que HTTP Basic + TLS puede tener ataques de reproducción.