Уникальный токен формы отключает многозадачность для пользователя

Если я хочу защитить свой сайт и пользователей от атак межсайтовой фальсификации (CSRF), я могу сгенерировать уникальный токен$token = md5( time() * rand ); накаждая страница это имеет форму. Токен находится в скрытом поле вводаecho '<input type="hidden" name="token" value="'.$token.'">'; и в то же время хранится в переменной сеанса$_SESSION['token'] = $token;.

Я проверю, есть ли на любой отправленной формеif($_POST['token'] == $_SESSION['token']) и действуйте соответственно.

Однако некоторые пользователи могут работать в многозадачном режиме. Это то, чем я сейчас занимаюсь, пока я публикую это.

При написании своего поста я открываю различные окна / вкладки, чтобы, возможно, изучить информацию или посмотреть на некоторые другие вопросы о переполнении стека. Переполнение стека позволяет без проблем отправить форму.

Но если бы я делал это на своем сайте, делая это - то есть просматривал другие страницы, все еще составляя пост / форму - мой$token будет обновляться каждый раз, когда я открываю другую страницу с моего сайта. Создание скрытогоinput токен в форме, над которой я работаю и в конечном итоге хочу отправитьнекорректныйпотому что это не будет соответствовать$_SESSION['token'] Переменная больше, которая была восстановлена, когда я посетил другую страницу ...

Любые хорошие идеи, как предотвратить эту проблему, или какие-либо лучшие решения, чтобы остановить CSRF в первую очередь?

Я хочу разрешить своим пользователям многозадачность И хочу быть защищенным от CSRF ...

Ответы на вопрос(2)

Ваш ответ на вопрос