Как предотвратить отравление печеньем - PullRequest
0 голосов
/ 27 октября 2009

Я сохраняю данные в куки для аутентификации пользователей при следующем входе в систему (опция «Запомнить меня»). Эти данные зашифрованы и хешированы.

Но вот проблема:

Любой желающий может взять этот файл cookie и поместить его на другой компьютер, и он будет работать.

Я слышал, что это называется отравлением печеньем

Как мне преодолеть это?

Ответы [ 4 ]

4 голосов
/ 27 октября 2009

Сохраните IP-адрес компьютера и / или имя хоста в файле cookie (в хэше), а также свою текущую схему и подтвердите ее.

3 голосов
/ 27 октября 2009

Вы действительно не можете остановить это, но есть вещи, которые вы можете сделать, чтобы сделать его сложнее и тем самым менее привлекательным

  1. Требуется, чтобы пользователь использовал https (443) весь сеанс. Это предотвратит любые атаки типа «человек посередине» от перехвата файла cookie

  2. Позволяет активировать только один сеанс одновременно. Как только появляется второй сеанс, первый сеанс становится недействительным.

  3. Требовать от пользователя указать свой старый пароль при смене пароля (изменить: или адрес электронной почты, или что-либо еще, что может привести к краже учетной записи после входа злоумышленника) ; это предотвратит взлом учетной записи и изменение пароля.

  4. Срок действия файла cookie сеанса очень ограничен - возможно, несколько часов.

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

2 голосов
/ 27 октября 2009

Угроза, которую вы описываете, заключается в том, что злоумышленник похитит cookie пользователя и использует его для доступа к сеансу пользователя. Один из способов избежать этого - хранить IP-адреса или имена хостов, как упоминает Даниэль А. Уайт, хотя, если это невозможно, нет 100% безопасного способа согласовать это.

Вот еще несколько вариантов защиты от такого рода атак:

  1. Используйте HTTPS для всего трафика сайта, основанного на сеансах, и настройте файлы cookie на передачу только через HTTPS. Если это вариант для вас, это предотвратит атаки «человек посередине».
  2. Установите дополнительный файл cookie со случайным значением, которое изменяется при каждом запросе. Если случайное значение используется более одного раза, вы знаете, что угонщик получил доступ, и вы можете уничтожить сеанс в целях безопасности.
0 голосов
/ 28 октября 2009

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

Что сделал Google: они позволяют вам просматривать «места» (или компьютер), которые вошли в вашу учетную запись (потому что вы можете использовать это дома, на работе и т. Д.) И «закрыть» эти подключения. В случае, если соединение вам неизвестно, вы можете «закрыть» его (закрыть сеанс) и немедленно изменить свой пароль, чтобы убедиться, что угонщик не использует ваш старый пароль (если пароль был известен о нем).

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