Возможно ли подделать сеанс с помощью JavaScript + Cookies? - PullRequest
1 голос
/ 12 января 2010

Предположим, у вас есть веб-приложение, которое предоставляет пользователям свой собственный сайт на поддомене (например, awesome.super-cms.com), и вы разрешаете им редактировать HTML. Далее предположим, что вы устанавливаете SessionID в файле cookie субдомена с подстановочными символами ("*.super-cms.com").

Пользователь, управляющий evil.super-cms.com, может легко написать JavaScript, который получает SessionID от других пользователей super-cms.com:

var session = $.cookie('SessionID');
// Now send `session` to evil.com

Мой вопрос: Может ли злоумышленник использовать эти собранные идентификаторы SessionID для совершения плохих действий? Например, подделать аутентификацию как другой пользователь?

Ответы [ 2 ]

4 голосов
/ 12 января 2010

Да, они могут.У этого парня, кажется, есть статья с примерами: http://skeptikal.org/2009/11/cross-subdomain-cookie-attacks.html

Вы можете установить домен куки, чтобы предотвратить это.Он установлен как ;domain=... внутри cookie, ваш язык, вероятно, будет иметь возможность сделать это напрямую.

0 голосов
/ 13 января 2010

Может ли злоумышленник использовать эти собранные идентификаторы SessionID для совершения плохих действий?

Да, но это легко понять:

  • не использовать подстановочные файлы cookie
  • установить флаг http только для любых файлов cookie

Я предполагаю, что вы используете это поверх SSL (в противном случае он уже широко открыт для атак MITM), и в этом случае установка флага только SSL также является хорошей идеей.

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

С

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