Sto leggendo molto sull'implementazione dei vincoli di sicurezza su un'API REST.
Ci sono molti metodi, alcuni migliori di altri per le applicazioni di terze parti o per consumare la mia API.
- HTTP Basic + TLS (con le chiavi)
- HTTP Digest + TLS
- OAuth 1.0a, 2.0
- Solo autenticazione-applicazione (con le chiavi) link
- Amazon Signature Version 4 Link
Per consumare la mia API ho 3 opzioni (da basso a alto grado di difficoltà da implementare, sempre usando TLS!):
- HTTP Basic + TLS (con le chiavi)
- HTTP Digest + TLS
- Solo autorizzazione dell'applicazione (con le chiavi)
- Amazon Signature Version 4
L'unico vantaggio di digerire su basic + tls è che la password non viene trasferita in testo normale ma in un hash MD5.
Ma secondo kbcert e wikipedia dicono che MD5 non deve essere usato (attacchi di collisione).
La mia domanda è, se la sicurezza MD5 è compromessa (oggi e nel prossimo futuro) 2. HTTP Digest + TLS non è un'opzione valida per consumare la mia API e ho solo le altre opzioni "più" sicure (1, 3, 4)?
So che HTTP Basic + TLS può avere attacchi di riproduzione.