I’ve made a website which has registration/login. I can see the PHPSESSID cookie in Chrome’s Developer Tools, so I’m wondering how can I use this session id value to hijack into the account I’m logged, from let’s say a different browser, for simplicity’s sake?
Should a secure website be able to determine that this session is being hijacked and prevent it?
Also, how come other big sites that use PHP (e.g. Facebook) do not have PHPSESSID cookies? Do they give it a different name for obscurity, or do they just use a different mechanism altogether?
Lots of good questions, and good on you for asking them.
First.. a session is just a cookie. A ‘session’ is not something that’s part of the HTTP stack. PHP just happens to provide some conveniences that make it easy to work with cookies, thus introducing sessions. PHP chooses PHPSESSID as a default name for the cookie, but you can choose any you want.. even in PHP you can change the session_name.
Everything an attacker has to do is grab that session cookie you’re looking at, and use it in its own browser. The attacker can do this with automated scripts or for instance using firebug, you can just change the current cookie values.
So yes, if I have your id.. I can steal your session if you didn’t do anything to prevent it.
However.. the hardest part for an attacker is to obtain the cookie in the first place. The attacker can’t really do this, unless:
The first part is hard to solve.. there are some tricks you can do to identify the computer that started the session (check if the user agent changed, check if the ip address changed), but non are waterproof or not so great solutions.
You can fix the second by ensuring that all your traffic is encrypted using HTTPS. There are very little reasons to not use HTTPS. If you have a ‘logged in’ area on your site, do use SSL!!
I hope this kind of answers your question.. A few other pointers I thought of right now: