Er is wel een manier te bedenken waarbij geen database-tabel meer nodig is. Ik heb dit ooit eens bedacht voor een CMS systeem, maar nooit echt geïmplementeerd.
Het formulier dat de token moet bevatten, zou ook een soort checksum kunnen bevatten die "before" state bevat. Ik zag dat als bijvoorbeeld een md5 hash van alle velden van een rij uit een database. Zo kon ik zien wanneer een gebruiker een wijziging doet op iets dat in de tussentijd al door iemand anders is gewijzigd.
Hetzelfde principe kun je hier toepassen, maar dan met alle velden die met die token zouden kunnen worden gewijzigd. Op het moment dat er een formulier wordt gesubmit, kun je vooraf bekijken of de huidige state wel gelijk is aan de state voordat het formulier werd gegenereerd. Klopt het niet, dan is er iets aan de hand waarvoor bevestiging van de eindgebruiker nodig is.
Een token is dan alleen opnieuw te gebruiken als precies dezelfde state nog eens voorkomt. En dat gebeurt niet als je bijvoorbeeld "laatst gewijzigd op"-velden meeneemt in de "checksum".
En die 36000 werden dan 24 uur later ook weer verwijderd uit die tabel (piekuur de volgende dag...).
Misschien is 24 uur dan ook niet de meest handige geldigheidsduur van zo'n token

[Voor 8% gewijzigd door Anoniem: 26306 op 17-04-2010 11:14]