2012-05-18 6 views
0

Моя цель - безопасный вход в систему, например, использование stackoverflow. Я новичок, но, как вы, наверное, видели, я целый день смотрел статьи стекирования в безопасности. В результате этого исследования я разработал план нападения. В частности, эта страница была отличной помощью Using OpenID for website Authentication. Не могли бы вы рассказать мне, будет ли следующая система безопасной системой, и если нет, то как мне улучшить систему.Безопасная идентификация пользователя OpenID

  1. Используйте OpenID для проверки пользователей.

  2. Как только пользователь был проверен OpenID, получите адрес электронной почты от OpenID.

  3. Хешируйте адрес электронной почты и храните в переменной сеанса.

  4. Сравнить HASHED адрес электронной почты для списка хэшированных адресов электронной почты в базах данных

  5. Содержания Возврата соответствующих этого пользователя на основании Хешированного адреса электронной почты.

В частности, я нервничаю из-за использования адреса электронной почты вместо ProviderOpenID.

Пожалуйста, предположим, что у меня есть (как я нашел ответы на эти вопросы на других страницах StackOverflow):

  1. Правильно разрушенные сеансы после использования.

  2. Настройка моего сервера для хранения данных сеанса в недоступном месте.

  3. Настройте мою базу данных безопасным способом.

  4. Я использую SSL, чтобы гарантировать, что трафик не может быть перехвачен.

Заранее спасибо.

ответ

1

В общем, ваш путь лучше использовать некоторую архитектуру аутентификации для используемого вами языка, который поддерживает OpenID. Это не только безопаснее, но и проще, вы пишете меньше кода, и вам не нужно поддерживать этот код или тестировать его. Есть для PHP, python, C#/asp.net, рельсы. У многих фреймворков также есть поддержка.

Во-первых, почему бы не использовать предоставленный ID?

Я думаю, что у вас есть две проблемы:

  1. Ее возможно, что поставщик OpenId может возвращать адрес электронной почты для другого домена, чем провайдера.

    Например, gmail может аутентифицировать меня правильно, но я могу указать, что мой адрес электронной почты был [email protected] Тогда вы читали бы мою личность, поскольку я являюсь Биллом Гейтсом, несмотря на то, что это не так. Конечно, есть способы предотвратить это, но в стандартной системе, вероятно, есть гарантии, и даже если это не так, это чья-то ответственность за их исправление, и другие люди будут смотреть на эти проблемы.

  2. Если я читаю википедию article правильно, OpenId идентификаторов не обязательно адреса электронной почты

    Это не проблема безопасности, но это делает перерыв ожидаемого поведения.

+0

Благодаря @imichaelmiers это была отличная помощь. Это то, что я буду делать. Можете ли вы порекомендовать архитектуру аутентификации для PHP? – Brett

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