Могут ли файлы cookie копироваться между машинами для олицетворения пользователя?
У нас есть приложение, которое помимо прочего проверяет наличие куки файла и читает и расшифровывает содержимое файла cookie. Хотя данные, хранящиеся внутри файла cookie, нечувствительны, он шифруется с помощью шифрования TripleDes. Сегодня встал вопрос о том, может ли файл cookie, сохраненный на одном ПК, копироваться на другой компьютер и будет ли веб-приложение обнаруживать наличие этого скопированного файла cookie на другом компьютере и, в конечном счете, расшифровывать то, что оно будет иметь на исходном ПК.
Мой вопрос таков:
Мы используем стандартную реализацию ASP.NET для сохранения cookie файлов (например, через HttpResponse), делает ли файл index.dat предотвращение пересадки файла cookie с одной машины на другую? Что делать, если файл index.dat также был перенесен и скопирован, или есть внутренняя структура внутри index.dat, которая связывает куки файл с конкретной машиной?
Ответы
Ответ 1
Совершенно верно. Это один из способов, с помощью которых атаки межсайтовых скриптов (XSS):
- Я добавляю javascript на страницу
- Я жду, когда кто-нибудь посмотрит на страницу
- Введенный мной javascript отправляет мне ваши файлы cookie
- Я вхожу в систему как вы и делаете плохие вещи.
Этот конкретный вопрос бит SO во время частной бета-версии.
Ответ 2
Да, кража файлов cookie является обычной техникой кражи сеанса у пользователя.
Некоторые сайты пытаются привязать куки файл к IP-адресу клиента, но это не удается в случае крупных корпоративных прокси-серверов с несколькими внешними интерфейсами или других нерезидентных настроек.
Ответ 3
Даже если все остальное в порядке, если кто-то может получить физический доступ к пользовательской машине, они могут скопировать файлы cookie на другую машину.
Например, просто клонируйте диск, если необходимо!
Ответ 4
В дополнение к другим ответам. Никогда не доверяйте чему-либо, исходящему от пользователя веб-приложения, независимо от того, зашифровано ли оно.
Это связано с идеей подтверждения ввода как на клиенте, так и на сервере. Не верьте, что проверка на клиенте была выполнена.