Я читал некоторые статьи о безопасности PHP и наткнулся на эту статью:
http://shiflett.org/articles/session-fixation
В этой статье описывается, что можно легко зафиксировать сеанс, передав переменную PHPSESSID в запросе URL (например, ?PHPSESSID=1234
). Тем не менее, насколько я понимаю (и, пожалуйста, поправьте меня, если я ошибаюсь), PHP рассматривает $_GET
, $_SESSION
и $GLOBALS
как разные типы переменных, когда register_globals
установлено в off
в php.ini, и поэтому использование ?PHPSESSID=1234
в запросе URL-адреса не должно произвести эту проблему.
Я протестировал следующий скрипт:
session_start();
if (!isset($_SESSION['count']))
{
$_SESSION['count'] = 0;
}
else
{
$_SESSION['count']++;
}
echo $_SESSION['count'];
Но я не могу воспроизвести фиксацию сеансов на своем сервере, и я предположил, что это связано с тем, что в моем php.ini register_globals
установлено значение off
.
Я ошибаюсь в этом?
Кажется важным знать наверняка.