Если на вашем сайте есть основные учетные записи пользователей, а также панель управления администратора, рекомендуется иметь отдельные сеансы для основных пользователей (которые могут иметь «запомнить меня») и отдельные сеансы для доступа администратора (срок действия которых можно принудительно истечь после того, как скажем, 10 минут бездействия).
Тем не менее, что является более безопасным способом справиться с админ маркер сеанса — в качестве параметра в URL или в виде файла cookie? (Предположим, что токен отслеживается в базе данных).
Каковы последствия безопасности каждого метода? Что касается PHP, можете ли вы использовать методы сеанса PHP для создания нескольких файлов cookie сеанса, или вам нужно создать свой собственный файл cookie маркера сеанса?
Файлы cookie более безопасны, особенно если вы используете HTTPS и устанавливаете Только HTTP а также Безопасный флаги.
Первый не позволяет любому коду JavaScript читать значение cookie в случае, если у вас есть какие-либо XSS уязвимости, хотя при их обнаружении было бы лучше обезопасить их, чтобы предотвратить другие типы атак, такие как инъекция клавиатурных шпионов.
Последний гарантирует, что cookie-файлы передаются только через HTTPS-соединение. Без этого MITM Злоумышленник может перенаправить другой запрос на HTTP-сайт http://www.example.com
(где example.com
это ваш веб-сайт), а затем перехватите файл cookie сеанса, установленный вашим сайтом.
Хранение идентификаторов сеансов в URL-адресах — плохая идея, поскольку они хранятся в истории браузера, по умолчанию они регистрируются (на прокси-серверах и на сервере) и могут быть пропущены referer
заголовок, если администратор следует по ссылке с вашего сайта в другое место (или даже если ваш сайт администратора ссылается на внешнее изображение).
Используйте куки, отправленные через https. Это более безопасно, чем стандартный файл cookie, и намного более безопасно, чем использование параметров URL.
Для более подробной информации посмотрите документацию php на php.net:
http://php.net/manual/en/session.security.php
Печенье, как правило, более безопасный выбор.
URL-параметры попадают в журналы. Особенно параметры GET регистрируются по умолчанию на многих веб-серверах / серверах приложений. Кроме того, URL-параметр может появиться многими неожиданными способами. Знаете ли вы о утечке, которая может произойти с заголовком Referer? Это только один пример https://isc.sans.edu/diary/When+does+your+browser+send+a+%22Referer%22+header+(or+not)%3F/16433 В основном это незначительная уязвимость, но это случается.