Итак, у меня есть несколько разных способов, чтобы попытаться предотвратить захват сеанса, один использует HTTP_USER_AGENT
и определяет, изменилось ли оно во время сеанса. Проблема с этим, если пользователь переходит на сайт на мобильном телефоне, а также изменения с мобильного зрения на вид рабочего стола, изменения пользовательского агента и пользователь получает следующее сообщение об ошибке:Безопасность захвата сеанса
if (isset($_SESSION['HTTP_USER_AGENT']))
{
if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT']))
{
echo "Error: security issue #1 (Please use contact us if recieving this error)";
exit;
}
}
else
{
$_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
}
Теперь я все еще хочу этот небольшой уровень безопасности, но я не хочу, чтобы появилось сообщение об ошибке, и я хочу, чтобы сайт оставался видимым для пользователя. Как мне это сделать?
Почему бы не использовать SSL? – 01100110
«Я хочу продолжать проверять соответствие User Agent, но иногда я хочу, чтобы все было в порядке, если пользовательский агент не соответствует». - Вы уверены, что эта проверка действительно полезна для вас? – Amber
Проверка агента пользователя добавляет абсолютно * ничего * к безопасности. Если вы исправите свой код, чтобы вообще не включать захват сеанса, вы можете просто удалить эту проверку и обеспечить пользователям лучший опыт. Если вы этого не сделаете, вы в любом случае ввернуты (и хакеры из России смогут заглянуть на ваш сайт :) –