Вам нужно понять разницу между сеансами PHP и куки.
Куки-файлы - это строки, которые отправляются сервером в браузер, и что браузер должен отправить сервер обратно на каждый последующий запрос до истечения срока действия файла cookie.
Например, если сервер отвечает запросом с заголовком Set-Cookie: foo=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT
, при каждом последующем запросе до 9 июня 2012 года браузер должен отправить запрос Cookie: foo=abc123
.
На скрипте PHP $_COOKIE['foo']
будет abc123
.
PHP-сессии основаны на файлах cookie, но они не сохраняют значения внутри файла cookie.
Если вы храните $_SESSION['foo'] = 'abc123'
, сервер НЕ отправит foo=abc123
клиенту в качестве файла cookie, но скорее создаст сеанс , хранящийся на сервере, и отправит в качестве файла cookie только идентификатор сеанса.
Итак, когда вы вызываете session_start()
, PHP генерирует новый сеанс на сервере с автогенерированным идентификатором (если вам интересно, вы можете прочитать идентификатор с session_id()
). Затем он отправит (автоматически) файл cookie клиенту, похожий на phpsessid=PHP_SESSION_ID_HERE
. Все это делается автоматически с помощью PHP, и вам не нужно об этом беспокоиться.
В конце этой истории, да, ваш код в безопасности. Это связано с тем, что вы не устанавливаете файл cookie authenticated=pass
(который будет небезопасным, так как клиенты могут легко перезаписать файлы cookie), но вместо этого вы сохраните это значение в хранилище сеансов PHP, и клиент увидит только идентификатор сеанса.
PS: вместо простого хранения логического «аутентифицированного» вы можете захотеть сохранить более полезную информацию в сеансе, такую как идентификатор пользователя аутентифицированного пользователя в базе данных или что-нибудь еще, что может иметь смысл.
PS2: PHP-сессии имеют устаревшую поддержку браузеров, у которых нет файлов cookie, но в 2015 году это бессмысленно (интересно, кто до сих пор отключает куки!), Если вы это сделаете, 90% сайтов перестанут работать). Как следствие, вы должны убедиться, что у вас есть эти два ини настройки: (КОХ: http://php.net/manual/en/session.configuration.php#ini.session.use-cookies)
session.use_cookies 1
session.use_only_cookies 1
По мне это безопасно. –