Об игре
Новости
Войти
Регистрация
Рейтинг
Форум
15:54
4181
 online
Требуется авторизация
Вы не авторизованы
   Форумы-->Ошибки и сбои (общее)-->

АвторПодверженность CSRF. Сдача ресурсов на предприятие
При сдаче ресурсов на предприятие появляется форма с отправкой запроса на sell_res.php

В форме присутствует скрытое поле: name=check_code, по логике вещей - защищяющее от CSRF атак.

Но код проверки с перезагрузкой страницы не меняется. Злоумышленник может один раз подсмотреть свой код и написать бота, который по таймеру будет сдавать ресурсы на предприятие.

Как надо.
В идеале при защите от CSRF атак проверочный код (токен) генерируется для каждой формы при каждом запросе. Без знания алгоритма генерации токена - его не возможно подделать.

Если все упирается в нагрузку на БД, то можно генерировать токен примерно по формуле:
md5('salt' + pl_id + obj_id + res_id + date('Y-m-d H') )

обрезать до 5-8 символов и кэшировать токены на час (наподобе кэширования капчи для ГР)


Для более улучшенной защиты форм от CSRF атак необходимо заменить поля

res_id
count

на что-нибудь бессмысленное. сгенированное для каждого пользователя по определенному алгоритму

md5('salt' + res_id + pl_id + obj_id + res_id + date('Y-m-d H') )
md5('salt' + count + pl_id + obj_id + res_id + date('Y-m-d H') )

тогда форма примет вид:

<form action=sell_res.php method=post>
<input type=hidden name=obj_id value=323>
<input type=hidden name=check_code value="dsfdg4">
<input type=hidden name=43gert32 value="1">
<input type=text name=dhr53ww value=0 style="width:40">
К списку тем
2007-2026, онлайн игры HeroesWM