Как мне управлять информацией о сеансе имени пользователя / пароля? - PullRequest
1 голос
/ 02 февраля 2010

У меня есть веб-сайт (основная суть которого описана в этом вопросе ), и я хочу иметь какой-то способ последовательно сохранять имя пользователя и некоторую информацию о пользователе, пока они используют сайт т.е. загружать и скачивать данные).

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

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

Кроме того, если / когда я реализую ssl, эти транзакции будут «автоматически» зашифрованы, или мне нужно будет сделать что-то еще, чтобы убедиться, что строки защищены, если они должны быть?

Ответы [ 2 ]

4 голосов
/ 02 февраля 2010

Это на самом деле очень сложный вопрос. Просто чтобы проиллюстрировать это, у вас есть проблема блокировки учетной записи: если вы блокируете на основании неудачных попыток, насколько легко злоумышленнику сделать DOS на вашем сайте?

Я перечислю несколько рекомендаций, которые помогут вам начать:

  1. Store Passwords Salted and Hashed вместе с именем пользователя и идентификатором пользователя. (Вы должны также хранить соль рядом с хешем.)

  2. Запретить частые попытки ввода неверного пароля. (Чаще, чем раз в несколько секунд).

  3. Если попытки не удаются для какого-либо данного пользователя или любого данного IP-адреса (более 3 раз в минуту) требуют некоторой формы проверки , например CAPTCHA. Это позволяет вам предотвратить тотальные атаки DOS.

  4. При реализации системы автоматического входа в систему использовать систему аутентификации токена .

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

  6. Используйте TLS / SSL, если это возможно , но не полагайтесь на их безопасность, когда данные передаются по сети.

0 голосов
/ 02 февраля 2010

Если ваш сайт построен на asp.net, то вы можете использовать ценные бумаги с точечными расчетами ... что действительно очень хорошо. и вы также можете использовать основные классы в нем, чтобы сделать его более безопасным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...