Avendo fatto lo stesso errore io stesso un paio di anni fa:
La maggior parte dei protocolli / software restituirà un codice di errore se si tenta di accedere con un nome utente valido (diverso da "anonimo") e una password vuota. Questo è vero anche per la maggior parte dei sistemi che consentono un qualche tipo di uso anonimo senza essere loggati affatto.
Per LDAP, tuttavia, il caso comune è che il server consente accessi con qualsiasi nome utente e una password vuota . L'utente finirà per essere anonimo. Ma il login restituisce un codice di stato che indica il successo.
RFC2829 dice:
An LDAP client MAY also choose to explicitly bind anonymously. A client that wishes to do so MUST choose the simple authentication option in the Bind Request (see section 4.1) and set the password to be of zero length. (This is often done by LDAPv2 clients.) Typically the name is also of zero length.
Quindi, ora immagina che l'accesso non sia fatto direttamente dall'utente. Ma l'utente accede ad un altro software e questo software prende il nome utente e la password e fa un login LDAP dietro le quinte.
Se questo software si fida ciecamente del risultato "successo" del server LDAP senza una gestione caso speciale per password vuote, boom .
Questo software potrebbe persino provare a leggere alcune informazioni sull'utente corrente, come l'indirizzo email. Ma se LDAP è usato come una directory di persone, queste informazioni potrebbero essere accessibili agli utenti anonimi. I server LDAP sono spesso raggiungibili solo dalla rete aziendale e non da Internet.
Ho detto all'inizio, che ho fatto questo errore anch'io. Il nostro software supporta molti diversi tipi di front e backend di autenticazione. LDAP era l'unico sistema efficace di tutti quelli che supportiamo.
Per garantire che ciò non accada mai più, ora respingiamo globalmente le password vuote per tutti i sistemi di autenticazione , a meno che il sistema non sia privo di password come i servizi Single Sign-On e le smart card. Abbiamo aggiunto un caso di test aggiuntivo alla nostra documentazione (verifica casi validi, verifica password errata, verifica password vuota).