A8-Cross-Site Request Forgery (CSRF)

A CSRF attack forces a victim’s browser, with an established session, to send a forged HTTP request, including the victim’s session cookie and any other automatically included authentication information, to a vulnerable web application. This allows the attacker to force the victim’s browser to generate requests the vulnerable application thinks are legitimate requests from the victim.

Example:

The fix is: Create a random page token, store it in the session, include it in all forms, as a hidden variable (for example), and verify it on each submit. That is, the server accepts submits from known outstanding forms.
Bonus: This also fixes the browser back button problem.
Example (fixed code): all source code