Ввод логина и пароля - установка csrf и запись его в базу и в сессию - при отправке форм сверка csrf из сессии с csrf из базы. Но возникают вопросы, на основе каких параметров генерировать csrf токен?
"csrf из сессии с csrf из базы"
и по какому принципу вы их сверять собираетесь? искать в базе запись с тем же хэшом )))
сверять нужно из сессии и из поля в форме.
< input type="hidden" name="token" value="hfjdhsalkjdfhlaksjd" >
по есть при выводе формы нужно подставлять этот хэш-токен.
а при сабмите на серваке сверять его с сессионным.
токен можно оставлять один на всю сессию. да и если будете их менять - начнутся глюки если пользователь откроет в двух вкладках 2 формы.
myspace: ок, мне инетерсно как будет получен "$tokenFromMysql" по какому признаку вы будете его оттуда доставать, как с юзерами связать? или вы хотели один токен на всех юзеров?
myspace: а если сессию угонят то как это по вашему спасет? ))) там уже ничего не спасет и это совершенно другой вектор атаки, там и без csrf все достанут.
угонят сессию - это значит что украдут сессионную куку.
ктото берет чужую куку, засовывет ее в свой браузер и все. он получается полностью авторизован на вашем сайте от имени того человека, видит его кабинет и тд.
сессия будет исопльзоваться оригинальная которая осталась от пострадавшего юзера (не новая).
ну сравните вы его токен из сессии с токеном из базы, очевидно это одно и то же при любом раскладе.
если вам от нечего делать (я же не знаю, мало ли у вас работа почасовая и нужно изображать бурную деятельность) и хочется еще базу грузануть и кода лишнего пописать - то конечно флаг в руки, только это не поможет ни при атаках типа csrf ни от угона куки.