2013-04-16 4 views
1

Я хочу реализовать простую учетную запись для зарегистрированных пользователей, поэтому они будут включены в систему после закрытия браузера. Поэтому я думал о создании файла cookie, который содержит уникальный ключ, сгенерированный UUID.randomUUID, и на стороне сервера я сопоставляю его с именем пользователя.Запомните мне функциональность + другие проблемы с безопасностью

Действительно ли это достаточно безопасно? Каковы риски? Должны ли я принимать меры предосторожности, чтобы хакеры не пытались использовать случайные ключи?

Я думал об использовании фреймворка для аутентификации, такого как spring security или apache shiro, но я не мог найти никакой пользы, которую они мне дают (мне не нужен сложный контроль доступа, просто регистрация пользователя/логин). Не хватает ли чего-то важного с точки зрения безопасности?

обновление

Я думаю, мой вопрос на самом деле: сделать рамки, как весной и Shiro сделать что-то значительно более сложные для запомнить функциональные возможности, которые производят безопасности, что я, вероятно, не может сравниться?

+0

Безопасно? Зависит от чего. Ничего важного не должно быть так. Хакеры могут и будут использовать случайные ключи - или, что еще хуже, сделать атаку «человек в середине» и прочитать ваш идентификатор сеанса, подслушивая провод. – CPerkins

+0

Вы были бы уязвимы для повторных атак, для одного. Все, что не хватает для выдачи клиентских сертификатов, действительно нечеткое с точки зрения безопасности. Информацию об атаках повторного воспроизведения см. На странице http://en.wikipedia.org/wiki/Replay_attack –

+0

См. [Окончательное руководство по аутентификации веб-сайтов на основе форм) (http://stackoverflow.com/questions/549/the-definitive-guide -в-формы на основе-сайт-аутентификация). –

ответ

1

Весенняя безопасность обеспечивает декларативную защиту. Я предполагаю, что вы используете Spring Framework для своего приложения. Весенняя безопасность и весна в целом обеспечивают гибкость, которую вы не сможете реализовать до момента, когда это потребуется. Я был в ситуациях, когда я был благодарен Весне, где были необходимы непредвиденные настройки.

Весенняя безопасность позволяет легко моделировать плагиновую аутентификацию - на основе базы данных, основанной на LDAP и т. Д. Она предоставляет страницу входа по умолчанию, если вы хотите ее использовать, обеспечивает перенаправление на страницу входа на основе URL-адреса и позволяет пользователю продолжить до URL-адреса после завершения аутентификации и еще много чего-то, что уменьшает количество кода котельной плиты, которое должно быть записано. Он также обеспечивает реализацию «Запомни меня». http://static.springsource.org/spring-security/site/docs/3.0.x/reference/remember-me.html. Но необходимо учитывать детальные соображения безопасности.

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

0

Давайте начнем с ответа на вопрос «Как помнить, что работает функция?». И весна-безопасность, и сиро схожий напоминают мне о внедрении службы. Они сохраняют зашифрованный предмет в cookie, а затем аутентифицируют пользователя из этого файла cookie. Это означает, что сервер отправляет ответ клиенту с заголовком Set-Cookie:<character sequence>, а затем клиент отправляет запрос с заголовком Cookie:<character sequence>.

Теперь давайте представим, что мы хотим, чтобы войти в чей-то счет:

  1. Мы можем просто использовать компьютер жертвы. (поэтому никогда не выполняйте высокочувствительные операции, если пользователь аутентифицирован с сохранением me service). Это также можно применить к имени пользователя-пароля , когда сеанс не завершен (браузер открыт) и жертва идет на обед.
  2. Мы можем проанализировать http-трафик, чтобы получить заголовки Cookie, а затем подписать при использовании этого заголовка. (так что вы можете использовать https для предотвращения анализа трафика ). Это также можно применить к идентификатору пользователя-пароля .
  3. Мы можем попробовать случайные ключи (вы можете использовать какой-либо фильтр грубой силы в сочетании с некоторым сложным алгоритмом кодирования предмета). Это может быть применено к аутентификации имени пользователя и пароля .

Вывод: никогда не выполняйте высокочувствительные операции, если пользователь аутентифицирован, помни меня. Используйте https, если вам нужно. Используйте защиту грубой силы. Подумайте о шифровании.