I'm primarily a C++ programmer, but I'm trying to pick up some PHP.
Apparently the way to implement web user sessions is to store the user's login ID in a cookie using the $_SESSION variable.
Is it not possible for someone to just modify their cookie, to give them different privileges or log in as a different user?
It seems like this authentication mechanism is just having the user store their ID in a file - and then just trusting them not to change it.
Is there something that prevents this?
Thanks!
PHP sessions are only secure as your application makes them. PHP sessions will give the user a pseudorandom string ("session ID") for them to identify themselves with, but if that string is intercepted by an attacker, the attacker can pretend to be that user.
This information is taken from "Session Management Basics" in the PHP manual, but simplified a bit. Some things may have been missed. Be sure to read through that as well.
Enable session.use_strict_mode
:
$userId-
)Enable session.use_only_cookies
and disable session.use_trans_sid
Referer
headerPeriodically regenerate the session ID and invalidate old session IDs shortly after regenerating
Optionally keep track of additional information in $_SESSION
that relates to the request (IP address, user agent string, etc)