Является ли аутентификация Apache Digest более безопасной или базовой или нет?

На странице Ввод авторизации Apache сообщает нам, что:

Apache поддерживает еще один метод аутентификации: AuthType Digest. Эта метод реализуется mod_auth_digest, а гораздо безопаснее.

а на странице mod_auth_digest Apache сообщает нам, что:

Этот модуль реализует аутентификацию HTTP Digest (RFC2617) и предоставляет альтернативу mod_auth_basic, где пароль не передается как чистое. Однако это не приводит к существенному преимущество над базовой аутентификацией. С другой стороны, хранение паролей на сервере гораздо менее безопасно с помощью дайджеста аутентификации, чем при базовой аутентификации.

Может кто-нибудь прояснить эти, казалось бы, противоречивые заявления для меня? Я понимаю, что оба способа обработки паролей уязвимы для повторных атак (если вы также не используете SSL), но это кажется отдельной проблемой.

Ответ 1

При базовой аутентификации пароль отправляется почти равным (с кодировкой base64) на сервер, а на стороне сервера он становится хэшированным и сравнивается с хешированным паролем (хранится в файле htpasswd или аналогичным). С помощью дайджест-аутентификации хешированный пароль отправляется на сервер (с некоторыми данными, определенными на сервере, так что атаки повтора не будут работать). Но для проверки пароля вам нужен простой пароль на стороне сервера (или что-то близкое к простому паролю). Это означает, что если злоумышленник получает доступ к файлу htpasswd, ему необходимо взломать все пароли, прежде чем они смогут использоваться для базовой проверки подлинности, а если он получит доступ к файлу htdigest, он может использовать его непосредственно для проверки дайджеста.

Вкратце: базовый auth менее безопасен на проводе, но более безопасен для хранения на сервере. Таким образом, лучшим выбором обоих будет использование базового auth с SSL. Но обе методики аутентификации имеют недостаток, что нет возможности для тайм-аута сеанса или явного выхода из системы, например. браузер останется включенным до закрытия. Это упрощает атаки, такие как CSRF.