I'm not exactly sure how the $_SESSION
work in PHP. I assume it is a cookie on the browser matched up with an unique key on the server. Is it possible to fake that and by pass logins that only uses sessions to identify the user.
If $_SESSION
doesn't work like that, can someone potentially fake cookies and bypass logins?
Yes.
The only thing identifying a user is a pseudo-random value being sent along with each request. If an attacker can guess the right values to send, he can pose as somebody else.
There are different ways to make this harder:
Sessions in PHP by default store the data in a file on the server (/tmp
/) and store an identifier cookie usually PHPSESSID
(it will be a hexadecimal number, e.g. f00f8c6e83cf2b9fe5a30878de8c3741
).
If you have someone else's identifier, then you could in theory use their session.
However, most sites check to ensure the user agent is consistent and also regenerate the session identiifer every handful of requests, to mitigate this.
As for guessing a session, it's possible, but extremely unlikely. It'd be easier to guess credit card numbers (smaller pool of characters (0-9
over 0-9a-f
) and a checksum to validate it). Though of course you'd also need the expiry and security code.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With