2015-07-18 2 views
0

У меня есть установка Symfony 2.7 с FosUserBundle (пользователями), FosRestBundle (API) и NelmioCorsBundle (CORS). Я последовал за некоторыми руководствами, которые были написаны на (недавно, если я хорошо понимаю), когда FosUserBundle использовал SHA512 с солью для шифрования паролей.Symfony Rest API, WSSE и Bcrypt

У меня есть рабочий сервер WSSE на моем Symfony, и я пытаюсь сделать реквизиты с Javascript-клиентом безопасным способом. Со старым методом «SHA15 + salt» я вижу, как это сделать: публичный api для получения соли на стороне клиента, мы воссоздаем зашифрованный пароль «как в базе данных» перед отправкой через WSSE-заголовок. Я думаю, что это также хорошо для хранения пароля в кеше (лучше, чем не зашифрованный пароль).

Но поскольку у bcrypt есть встроенная соль, как я могу сгенерировать зашифрованный пароль на стороне клиента? Конечно, одним из решений было бы прекратить использование bcrypt и начать использовать SHA512 + соль, но менее безопасно; и другое решение будет чем-то вроде oauth2 и HTTPS, но сейчас я бы хотел найти безопасное решение без HTTPS.

Любой ключ?

Спасибо!

ответ

0

Если вы можете создавать зашифрованные пароли на стороне клиента, которые соответствуют вашим серверам, вы можете вообще не использовать пароли. Независимо от того, как вы это сделаете, это будет небезопасно.

Взгляните на подход, основанный на токенах. Много примеров.

  1. Клиент посылает маркер запроса что-то вроде:
  2. POST/лексем (имя пользователя и пароль в качестве полезной нагрузки, HTTPS только пожалуйста)
  3. сервер проверяет подлинность пользователя и возвращает маркер (возможно, веб-токен JSon)
  4. клиент отправляет маркер обратно на каждый запрос, как правило, в заголовке
+0

Хорошо, так что вы говорите, что «единственный путь», чтобы сделать это должным образом с HTTPS (и первый раз пароль отправьте «как есть», но это нормально, потому что более ss Я прав?) Тогда, какой протокол вы бы предложили? Я смотрел на oauth2, но поскольку мой клиент находится в JavaScript (Polymer), нет способа сохранить ключ клиента в безопасности, или я что-то упустил здесь? – adari

+0

Угадайте, я не понимаю. Вы сказали, что используете FOSUserBundle. Поэтому я предположил, что у вас есть база данных пользователей и паролей, доступных вашему серверу. Разве это не так? oauth2 - это другой подход к аутентификации. Попросите свой сервер аутентифицировать пользователя, а затем отправить обратно токен клиенту. Затем используйте токен для последующих запросов. – Cerad

+0

Да, это правильно. Я думаю, что я сделал путаницу с oauth2, потому что этот подход использует действительно символическую систему. Но я понимаю из вашего ответа, что я могу создать систему токенов в своей реальной системе аутентификации. Благодаря ! – adari

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

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