Sessions

TODO: Incomplete

PHP provides a pretty good session handler, however due to its simplicity, it can be vulnerable to some security issues.


So we have a common understanding, a typical website works by a browser making a request (e.g. a page), and the server responds, and the connection is closed.

As you navigate around a website this happens many times, and as such, the server doesn't really keep track of the person... this is because HTTP is known as a "stateless" protocol.

So a person could login, and on the next request, the server has forgotten who they are.

This is where cookies come in, they allow a server to send a piece of data to the browser, and each time the browser makes a request from that point on, the cookie data is sent back.


When a session is created by PHP, it creates an ID such as "78e9cc6q3is6qodsf869uggdl3". This should be unique to the visitor, and can be seen as a key to access the session data.

Typically this ID is stored in a cookie, or passed in the URL (not advisable).

If the session ID is known by an attacker, they can create a cookie in their browser with the same value, and start using the session.

Session fixation.

Sessions created on another website on the same host.

session::regenerate()

Session ID obtained by a third party / attacker (e.g. a hacker)... this can be via session fixation, packet sniffing, session being passed in query string (referrer header / image src), malware, etc.