Шифрование паролей 3 подхода

#passwords #password-encryption

#пароли #пароль-шифрование

Вопрос:

С одной стороны, у меня есть: http://forums.enterprisedb.com/posts/list/2481.page Здесь мы объявляем поле как BYTEA и можем расшифровать его, а шифрование выполняется на уровне базы данных.

С другой стороны: https://www.owasp.org/index.php/Hashing_Java Здесь как varchar, и мы сравниваем хэши только для авторизации.

Наконец, весна дает http://static.springsource.org/spring-security/site/docs/3.1.x/apidocs/org/springframework/security/crypto/password/StandardPasswordEncoder.html применяемое значение char secret одинаково для каждого пароля?

Какой подход является наилучшим? (Я склоняюсь к Spring, поскольку, насколько я понимаю, он инкапсулирует аналогичную логику, как OWASP, в нескольких строках кода?)

Комментарии:

1. Что для вас значит «лучший»?

2. меньше кода, больше безопасности.

Ответ №1:

Кодировка PostgreSQL:

  • Ваше приложение, вероятно, будет зависеть от PostgreSQL, и, возможно, вам придется переписать эту часть, если вы хотите использовать ее с другой СУБД.
  • Если PostgreSQL находится на другом компьютере, вам следует рассмотреть возможность использования какой-либо формы безопасной связи между приложением и СУБД, поскольку пароли передаются между ними в виде обычного текста.

OWASP против Spring:

  • Они очень похожи.
  • Оба используют соль.
  • Spring использует секрет (Owasp нет).
  • Конечно, вы можете изменить Owasp, чтобы использовать секрет, если вам это нужно, или вы можете использовать StandardPasswordEncoder без секрета.
  • Spring encode() возвращает только одну строку, которая также содержит соль (как обычно в unix / linux), в то время как Owasp требует дополнительного атрибута базы данных для значения соли.
  • Spring проще и, возможно, поддерживается лучше, чем веб-статья Owasp от 2008 года.
  • Owasp объединяет функциональные возможности: он кодирует / проверяет пароли и также содержит много кода JDBC.
  • Spring просто кодирует / проверяет пароли, и ваша ответственность — хранение паролей. Но, возможно, ваш фреймворк сделает это за вас, или вы могли бы написать это для себя.

Я бы использовал StandardPasswordEncoder . Это более просто и работает так же, как Owasp.