фиксация сеанса - PullRequest
       8

фиксация сеанса

2 голосов
/ 23 мая 2010

Я новичок в веб-разработке и пытаюсь решить проблемы безопасности. Я прочитал эту статью на http://guides.rubyonrails.org/security.html. Вот некоторые из шагов, о которых автор упомянул, как злоумышленник исправляет сессию.

  1. Злоумышленник создает действительный идентификатор сеанса: он загружает страницу входа в веб-приложение, где он хочет исправить сеанс, и берет идентификатор сеанса в файле cookie из ответа (см. Номера 1 и 2 на изображении).
  2. Возможно, он поддерживает сессию. Сеансы с истекающим сроком действия, например, каждые 20 минут, значительно сокращают время атаки. Поэтому он время от времени обращается к веб-приложению, чтобы поддерживать сеанс.
  3. Теперь злоумышленник заставит браузер пользователя использовать этот идентификатор сеанса (см. Номер 3 на изображении). Поскольку вы не можете изменить файл cookie другого домена (из-за той же политики происхождения), злоумышленник должен запустить JavaScript из домена целевого веб-приложения. Внедрение кода JavaScript в приложение с помощью XSS завершает эту атаку. Вот пример: document.cookie = "_ session_id = 16d5b78abb28e3d6206b60f22a03c8d9"; . Подробнее о XSS и инъекциях читайте позже.
  4. Злоумышленник заманивает жертву на зараженную страницу с помощью кода JavaScript. При просмотре страницы браузер жертвы изменит идентификатор сеанса на идентификатор сеанса прерывания.
  5. Поскольку новый сеанс прерывания не используется, веб-приложение потребует от пользователя аутентификации.
  6. С этого момента жертва и злоумышленник будут совместно использовать веб-приложение в одном сеансе: сеанс стал действительным, и жертва не заметила атаку.

Я не понимаю пару пунктов.

  1. Почему пользователь должен войти в систему на шаге 5, так как сеанс отправляется через?
  2. Я видел возможные решения в вики, такие как проверка свойств пользователя и другие. Почему мы не можем просто сбросить сеанс для пользователя, который входит в систему, когда они вводят имя пользователя и пароль на шаге 5?

1 Ответ

1 голос
/ 23 мая 2010

1) Злоумышленник получает сеанс с шагами 1 и 2, который еще не вошел в систему. Это ловушка. На шаге 5 жертва входит в систему, думая, что идентификатор сеанса новый (и «секретный»). В тот момент, когда жертва вошла в систему, злоумышленник может повторно использовать «секретный» идентификатор сеанса и также эффективно войти в систему.

Итак, чтобы ответить на ваш вопрос: жертва вынуждена войти в систему, потому что сеанс прерывания еще не вошел в систему, чтобы обмануть жертву, чтобы войти в систему, используя этот идентификатор сеанса.

2) После объяснения шагов фиксации сеанса первой контрмерой (раздел 2.8) является создание нового сеанса и отказ от старого после входа в систему. Точно, какова была ваша идея!

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