Может ли какой-то хакер украсть файл cookie у пользователя и войти с этим именем на веб-сайт?
Чтение этого вопроса
разные пользователи получают одинаковое значение cookie в aspxanonymous
и найдите решение, я начинаю думать, , если кто-то может по-настоящему украсть файл cookie каким-то образом, а затем поместить его в свой браузер, а login позволяет говорить как администратор.
Знаете ли вы, как проверка подлинности в форматах может гарантировать, что даже если cookie будет украден, хакер не использует фактический логин?
Или вы знаете какой-либо другой механизм автоматической защиты?
Благодарим вас за продвинутый.
Ответы
Ответ 1
Можно ли украсть файл cookie и аутентифицироваться как администратор?
Да, возможно, если файл cookie Forms Auth не зашифрован, кто-то может взломать их файл cookie, чтобы предоставить им повышенные привилегии или если SSL не требуется, скопируйте кого-то другого cookie человека. Тем не менее, вы можете предпринять шаги для снижения этих рисков:
В элементе system.web/authentication/forms:
- RequireSSL = верно. Это требует, чтобы файл cookie передавался только через SSL
- slidingExpiration = ложь. Когда это правда, истекший билет может быть реактивирован.
- Cookieless = ложь. Не используйте cookieless сеансы в среде, где вы пытаетесь обеспечить безопасность.
- enableCrossAppRedirects = ложь. Когда false, обработка файлов cookie через приложения не разрешена.
- Защита = все. Шифрует и хеширует файл cookie форм с помощью машинного ключа, указанного в файле machine.config или web.config. Эта функция помешает кому-то взломать свой собственный файл cookie, так как этот параметр сообщает системе генерировать подпись файла cookie и каждого запроса на аутентификацию, сравнивать подпись с переданным cookie.
Если вы этого захотите, вы можете добавить небольшую защиту, поместив некоторую информацию об аутентификации в сеанс, такую как хэш имени пользователя (никогда не имя пользователя в текстовом формате и пароль). Это потребовало бы, чтобы злоумышленник украл как cookie сеанса, так и файл cookie Forms Auth.
Ответ 2
Сценарий, в котором печенье можно украсть, происходит в общедоступной беспроводной среде. В то время как вы или я никогда не работали в такой установке, может быть невозможно предотвратить ваши клиенты от этого.
Если злоумышленник знает, к какому защищенному сайту вы подключались, идея заключается в том, что ваш браузер можно обмануть в проводку для незащищенной версии одного и того же URL-адреса. В этот момент ваш cookie скомпрометирован.
Чтобы в дополнение к httpOnlyCookies
вам нужно указать requireSSL="true"
<httpCookies httpOnlyCookies="true" requireSSL="true" />
Я не согласен с комментарием в Rook, потому что я считаю это несправедливым;
@Aristos я обновил свой ответ. Но если честно, если вы используете платформу разработки Microsoft, ваше приложение будет по своей сути небезопасным. - Ладья 22 мин назад
Безопасность не происходит случайно, и это не происходит "прямо из коробки", по крайней мере, не в моем опыте. Ничто не защищено, пока оно не будет таким, независимо от платформы или инструментов.
Ответ 3
Во многих случаях файлы cookie, используемые для аутентификации, сопоставляются с сеансом на сервере, поэтому не только можно взять файл cookie и войти в систему, однако вы можете захотеть прочитать про крест подделки запроса сайта, которые позволяют использовать механизм для этого cookie злонамеренно:
http://en.wikipedia.org/wiki/Cross-site_request_forgery
Ответ 4
Существует много способов, которыми идентификатор сеанса может быть пропущен злоумышленнику. XSS является наиболее часто используемой атакой для захвата идентификатора сеанса, и вы должны проверить уязвимости XSS в своем приложении., Общим методом повышения прочности сеанса является проверка IP-адреса. Когда пользователь входит в систему, запишите IP-адрес. Проверьте IP-адрес для каждого запроса, если IP-адрес изменит его, вероятно, на захваченный сеанс. Эта мера secuirty может предотвратить законные запросы, но это очень маловероятно.
Сделайте не проверку X-Forwarded-For или User-Agent, тривиальным для злоумышленника для изменения этих значений.
Я также рекомендую включить httpOnlyCookies в файле web.config:
<httpCookies httpOnlyCookies="true"/>
Это затрудняет атакующему захват сеанса с помощью javascript, но его все еще возможно.
Ответ 5
Я не знаю специфики рассматриваемого файла cookie, но, как правило, это неправильная практика хранения как имени пользователя, так и пароля в пользовательском cookie. Обычно вы хотите сохранить имя пользователя в файле cookie вместе с другой нечувствительной информацией. Таким образом, пользователю будет предложено предоставить свой пароль только при входе в систему.
Ответ 6
Я работаю над этим, и я придумываю идею, что я не уверен, что он на 100% безопасен, но есть идея.
Моя идея состоит в том, что каждый пользователь должен перейти со страницы входа.
Если кто-то украл файл cookie, он не прошел страницу входа в систему, а отправился прямо на остальные страницы. Он не может пройти страницу входа, потому что не знал действительно пароль, поэтому, если он он все равно терпит неудачу.
Поэтому я помещаю дополнительное значение сеанса, чтобы пользователь успешно прошел страницу входа в систему.
Теперь на каждой критической странице я проверяю это дополнительное значение сеанса, и если он найден в нем, я забираю вход и снова спрашиваю пароль.
Теперь я не знаю, возможно, все, что все готово для Microsoft, нужно проверить больше.
Чтобы проверить эту идею, я использую эту функцию, которая непосредственно делает пользователя вошедшим в систему.
FormsAuthentication.SetAuthCookie("UserName", false);
Моя вторая безопасность, что у меня есть все готовое исправление и использование, заключается в том, что я проверяю наличие разных ips и/или разных файлов cookie у одного и того же зарегистрированного пользователя. Я много думал о том, что многие проверки (если есть за прокси, если они из разных стран, что искать, сколько раз я вижу его и т.д.), Но это общая идея.
Это видео точно показывает, что я пытаюсь предотвратить. Используя трюк, который я описал здесь, вы не можете просто установить только cookie для входа.
Просто поделитесь своими идеями...