Что такое увлечение сеанса и как его остановить

1656613219 chto takoe uvlechenie seansa i kak ego ostanovit

автор Рамеш Лингапа

1*IpyNijir6izjsjs2kW6ADA
Вкусное печенье

Эта история для начинающих и имеющих базовые знания о файлах cookie (сеансовые файлы cookie), но кто не знает, как правильно их защитить. Для этого не обязательно быть экспертом по безопасности. Вам просто нужно понять процесс, и тогда вы узнаете.

Если у вас нет представления о файлах cookie или как они работают, прочтите статью о файлах cookie HTTP.

Давайте приступим к этому! У вас есть отличное веб-приложение, которое предлагает отличный сервис для клиентов. Это значит, что у вас будет Аутентификация механизм, чтобы привлечь пользователя к вашему приложению. Вы знаете, насколько важна безопасность. Вы приняли все меры предосторожности при аутентификации. Прекрасно!

После успешной аутентификации вы должны создать файл Сессия для этого пользователя. Это означает, что вы действительно создаете a печенье и отправить его обратно в браузер. Например, в веб-приложении Java по умолчанию она называется JSESSIONID. Это выглядит примерно так:

1*C7TCffrIAgtzkEnnS2fW3Q
Информация о файлах cookie из Консоли разработчика Chrome -> Приложения -> Файлы cookie

Используя этот файл cookie, только ваш веб-сервер сможет определить, кто является пользователем, и он предоставит соответствующее содержимое. И это печенье выглядит здорово. В файле cookie отсутствует конфиденциальная информация, только случайный идентификатор (нельзя угадать). Следовательно, пользователь Сейф! …правда?

Ну не совсем, давайте посмотрим поближе.

1*0z9yq3Ti01YFUiZmN3bRdg

Этот файл cookie содержит два свойства: Только Http (HTTP) и Безопасный. Их значения пусты, смысл не включен для этого файла cookie. Вот тут-то и доходит до того, что это уже не безопасно.

Вот здесь и вступает в игру увлечение сеансов.

Перехват сессиииногда также известен как печенье похищение это эксплуатация действительного компьютера сессии — иногда также называют а сессии ключ — получение несанкционированного доступа к информации или услугам в компьютерной системе. — Википедия

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

Это возможно? Как они получают тот сеансовый идентификатор, который находится в браузере пользователя?

Да, возможно. Два свойства cookie (или флажки), которые мы видели раньше (HttpOnly и Безопасный) является причиной этого.

Флаг только Http

HttpOnly файлы cookie недоступны для JavaScript Document.cookie API; они отправляются только на сервер. Например, файлы cookie, хранящиеся в сеансах на стороне сервера, не должны быть доступны для JavaScript, а HttpOnly следует установить флаг.

Проще говоря, если вы не установите флаг httpOnly, файл cookie можно читать с переднего кода JavaScript.

Откройте любую веб-страницу, файл cookie которой не имеет метки httpOnly. Затем откройте Консоль разработчика Chrome а затем коснитесь Вкладка «Консоль». (Cmd+Shift+J или Ctrl+Shift+J). Тип document.cookie и Enter, и вы увидите что-то вроде этого:

1*5Y26jhjlgFFrvi0XFnJa6g
document.cookie использование

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

Вам может быть интересно, как они могут написать этот код в вашем приложении. Это возможно несколькими способами.

Один из способов – сделать инъекцию ненадежная сторонняя библиотека JS как журналирование, вспомогательные утилиты и т.д. Прочтите эту статью Я собираю номера кредитных карт и пароли с вашего сайта. Во как.

Другим способом является использование a Атака межсайтовых сценариев. Мы не будем вдаваться в подробности, но помните, что это возможно.

Итак, как нам это исправить?

Сессионный файл cookie даже не должен быть доступен клиенту JavaScript. Это необходимо только для сервера. Мы должны сделать его доступным только для сервера. Это можно сделать, добавив одно слово (Только http) в вашем set_cookie http заголовок ответа. Нравится это:

Set-Cookie: JSESSIONID=T8zK7hcII6iNgA; Expires=Wed, 21 May 2018 07:28:00 GMT; HttpOnly

Добавив Только http флажок вы указываете браузеру, что этот файл cookie не должен читаться кодом JavaScript. О другом позаботится браузер. Вот как это выглядит после добавления флага httpOnly:

1*qjk5J3R-k88qpkMq5wkYJg
набор cookie с флажком httpOnly

Обратите внимание на метку в свойстве HTTP. Это свидетельствует о том Только http включен.

1*qD_G_6aUnj8LaDbPdHY9mA

Вот это можно увидеть document.cookie не возвращает наш сеансовый файл cookie. Это означает, что ни один JS не может его прочесть, включая какие-либо внешние сценарии.

Вот и все – один до конца!

Безопасный флаг

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

Итак, когда файл cookie посылается в браузер с флажком безопасный, и когда вы делаете запрос в программу с помощью HTTP, браузер не добавит этот файл cookie к запросу. Он добавит его только по запросу HTTPS. Запрос HTTPS будет зашифрован, поэтому файлы cookie будут безопасно отправляться по сети в программу.

Как кто-нибудь может прочитать файл cookie в запросе HTTP?

Этого можно достичь, когда кто-то «Человек посередине» атака) контролирует весь трафик в сети клиентов. Они могут видеть данные в чистом тексте, если запрос есть HTTP.

Когда его отправят HTTPS, все данные будут зашифрованы из браузера и отправлены в сеть. Злоумышленник не сможет получить исходящие данные, которые вы посылали. Злоумышленник также не сможет расшифровать содержимое. Вот почему передача данных через SSL безопасна.

Итак, как нам это исправить?

Так же, как и флаг httpOnly, вам просто нужно добавить безопасный флаг в вашем set_cookie Заголовок ответа HTTP. Нравится это:

Set-Cookie: JSESSIONID=T8zK7hcII6iNgA; Expires=Wed, 21 May 2018 07:28:00 GMT; HttpOnly; Secure

В Java это можно сделать несколькими способами. Если вы используете Servlet 3.0 или более поздней версии, вы можете настроить эти параметры в web.xml нравится это:

<session-config>    <cookie-config>        <http-only>true</http-only>        <secure>true</secure>    </cookie-config> </session-config>

Если среда не поддерживает ее, вы можете добавить ее вручную. Например, используя сервлеты, вы можете сделать это:

Наконец, вот как это выглядит, когда установлены оба флага,

1*zhc23uSW0I1enxdqSUWN3Q

Вывод

Поэтому, когда вы имеете дело с файлами cookie сеанса или другими важными файлами cookie, убедитесь, что вы добавили эти два флажка.

Спасибо за прочтение, Счастливое обеспечение!

Добавить комментарий

Ваш адрес email не будет опубликован.