Хорошо, я пытаюсь проверить фиксацию / перехват сеанса на моем локальном хосте.
Я пытаюсь передать свой URL с SID от злоумышленника жертве и разрешить жертве войти в этот URL. Но когда жертва входит в систему, злоумышленник обновляет страницу и все еще на странице входа.
Затем я обнаружил, что если у меня есть две вкладки для входа в браузер, жертва входит в систему на вкладке 1, но вкладка 2 не выполняет автоматический вход после обновления. Так вот, вероятно, почему мой злоумышленник остается на странице входа?
Мой вопрос в том, что Что мне нужно сделать в моих php-файлах для автоматического входа пользователя в другие вкладки, если он уже вошел в одну вкладку? К какому ключевому слову следует обратиться в этом случае?
Сессии используют куки, чтобы запомнить, вошел ли пользователь в систему или нет. Когда вы начинаете сеанс (session_start()
), сервер отправляет файл cookie сеанса с уникальным идентификатором сеанса. Когда пользователь запрашивает страницу, требующую входа в систему, сервер проверяет cookie с идентификатором, чтобы убедиться, что он действителен.
Фиксация сессии и HiJacking сессии очень похожи, главное отличие заключается в том, как сессия скомпрометирована. Никогда не помещайте SESSID в URL, вы просто просите, чтобы его взломали. Вместо этого я бы предложил вам создать переменную сеанса, когда пользователь вошел в систему.
НАПРИМЕР:
АВТОМАТИЧЕСКИЙ ВХОД: ПРОВЕРЬТЕ КОД
session_start();
if(isset($_SESSION['logged_in'])){
header("location:loginonlypage.php")
}
ПРЕДОТВРАЩАЕТСЯ СЕССИЯ HIJACKING / FIXATION:
Однако тот факт, что идентификатор вашей сессии отсутствует в URL, не означает, что перехват / фиксация сессии не произойдет. Используйте ip пользователя в качестве меры безопасности, чтобы предотвратить это. Также убедитесь, что вы установили сеансовые куки только для HTTP, чтобы Javascript не испытывал соблазн съесть ваши куки 🙂
ini_set('session.cookie_httponly', 1); //SET HTTP ONLY COOKIE
if (!isset($_SESSION['last_ip'])) {
$_SESSION['last_ip'] = $_SERVER['REMOTE_ADDR'];
}
if ($_SESSION['last_ip'] !== $_SERVER['REMOTE_ADDR']) {
session_unset();
session_destroy();
}
Других решений пока нет …