2014-10-22 8 views
1

Я разрабатываю веб-приложение. Теперь с точки зрения безопасности требуется соленое хеширование для пароля, когда оно отправляется с клиента на сервер. Теперь моя проблема в том, что если я случайным образом генерирует соль, добавьте ее к паролю и хэш-комбинацию, как бы этот пароль был проверен. Поскольку соль генерируется случайным образом, хэш комбинации соли + пароль будет отличаться каждый раз. Если Я отправляю на сервер соль, созданную вместе с учетными данными пользователя, это разоблачит соль. Открытая соль создаст аналогичные проблемы, так как человек, пытающийся взломать пароль, может добавить открытую соль с разными паролями, чтобы получить хэш и сопоставить ее. Я проверил множество веб-сайтов и вопрос о переполнении стека, но ничто не соответствовало моей потребности.Как проверить пароль, который хэшируется с использованием случайной соли?

Есть инструменты, которые могут считывать память браузера и воровать введенные пароли. Поэтому на стороне клиента также требуется соленое хеширование.

+3

Не делайте свой хэширования паролей на стороне клиента. Весь клиентский код может быть легко изменен, что делает вашу «безопасность» бесполезной. – Cerbrus

+0

Понятно, что ваше понимание сетевой безопасности низкое. Таким образом, почему вы тратите время на попытку реализовать свою систему входа? Эта проблема уже решена почти в каждой инфраструктуре веб-разработки. Для решения этой проблемы вы должны использовать существующие инструменты и библиотеки. Риск получить это серьезно неправильно * действительно, действительно, действительно высокий *, как вы уже продемонстрировали. Зачем беспокоиться? Используйте готовое решение и займитесь проблемой, которую вы на самом деле пытаетесь решить. – spender

+0

@spender Предложите, если у вас есть решение этого вопроса. Я попытался изобразить ситуацию, я не могу раскрыть реальную архитектуру. Были реализованы различные функции безопасности, но на стороне клиента требуется соленое хеширование. – Yasha

ответ

2

Вы должны сохранять соль на стороне сервера кода.

При аутентификации пользователя вы отправляете пароль на сервер. Сервер добавляет соль, а затем хеширует пароль. Соль должна храниться где-то в коде сервера или в базе данных.

Вы должны Никогда отправьте соль на клиентскую сторону приложения.

+2

Но я бы не стал хранить его в той же базе данных, что и соответствующие хэши. –

+0

@NickRussler; хранение солей в другой базе данных - это только безопасность через неясность. Это добавляет сложности, не добавляя реальной дополнительной безопасности. Если одна база данных была скомпрометирована, можно предположить, что другие базы данных тоже. Важнейшим аспектом правильного использования солей является хорошая случайность для каждого пользователя и ** не ** отправка соли клиенту. – pyrocumulus

+0

Просто повторите: используйте * различную * соль для * каждого * пароля. В противном случае злоумышленник может грубо использовать все пароли в базе данных параллельно. @sharpcloud, на самом деле нет причин сохранять безопасность соли. В общем, я бы счел соль общедоступной. Если вы хотите другую линию обороны, используйте перец (который вы держите в секрете, в вашем источнике или в конфиге): https://security.stackexchange.com/questions/3272/password-hashing-add-salt-pepper-or-is -salt-enough/3289 # 3289 – Perseids

1

Нет проблем с сохранением соли в базе данных. Соль есть только там, чтобы убедиться, что злоумышленник не использует какую-либо таблицу с большим количеством вычисленных хешей и ее соответствующих паролей, чтобы узнать пароли вашей скомпрометированной базы данных. С солью единственным вариантом для злоумышленников является грубая сила.

Таким образом, чтобы нападавшие стали более грубыми и узнали пароли из хешей, я предлагаю вам долгую и безопасную случайную соль для каждого пользователя.

Хорошее объяснение можно найти на Why do we use the "salt" to secure our passwords?

+0

спасибо за ссылку, но я ищу выход из случайных солей. Я хочу избегать любой возможности для Brute force или Rainbow tables – Yasha

 Смежные вопросы

  • Нет связанных вопросов^_^