Loading...
FSeven (11.08.2021 в 20:56)

Не всегда будет проходить защита от CSRF =D.
Сейчас начал набирать смс, через 5 минут закончил, но оператор дал мне иной ip)
Я не смогу отправить своё смс =D и его потеряю

Дык можно туда id пользователя пихнуть если была пройдена авторизация до этого
Ну вобще логика в этом есть по поводу набора наверно даже у себя сменю . Как то не думал в этом направлении
Mr.Max (11.08.2021 в 21:00)

Дык можно туда id пользователя пихнуть если была пройдена авторизация до этого

Если не менять id и ТОКЕН, тогда CSRF не будет меняться, а это не есть хорошо.
FSeven (11.08.2021 в 21:06)

Если не менять id и ТОКЕН, тогда CSRF не будет меняться, а это не есть хорошо.

Почему ? time().time() , ключ и id добавить
________
посл. ред. 11.08.2021 в 21:08; всего 1 раз(а); by Mr.Max
Mr.Max (11.08.2021 в 16:37) По поводу CSRF этим болеет как правило POST запрос. Я себя защищаю так может кому пригодится : ТОКЕН генерирую :
php
   $CSRF = md5('ТУТ ВАШ КЛЮЧ'.time().preg_replace('/[^0-9.]/', '', $_SERVER['REMOTE_ADDR']).time());   
можно использовать конечно встроенные функции генератора вместо md5 но я этим не болею суть не меняется .... Проверять можно по куках или сессиях токен. Дабы не захаращивать лишний раз сервер сессиями я это делаю по куках . Форма отправки :
php
   <form action="" method="post"> <input type="text" name="login" required="" value=""> <input name="CSRF" type="hidden" value="<?=$CSRF?>"> <input class="button" type="submit" name="submit" value="Отправить"> </form>   
Перед отправкой забиваем в куку токен :
php
   if(!isset($_POST['submit']) ? setcookie('token', $CSRF, time() + 300) : null);   
Время жизни куки 5 минут после токен мертвый! Ну и проверка формы что то типа;
php
   <? if(isset($_COOKIE['token']) != ОБРАБОТЧИК($_POST['CSRF'])): echo 'Токен проверки неверный или его срок истек!'; endif; ?>   
А не проще генерировать случайный набор символов без всяких велосипедов через
php
   random_bytes()   
И обновлять токен после перезагрузки страницы
Mr.Max , будет надежней привязат ь текущий токен к текущей сессии пользователя.

Для начала сформировать случайное имя пост запроса из 9 случайных символов: $token_name = substr(md5(rand(111111,999999)),0,9);

Далее сформировать данные запроса из 16 случайных символов $token_data = substr(md5(rand(111111,999999)),0,12);

И записать всё это в сессии. В итоге получится что-то вроде <input type="hidden" name="d26ys17bn" value="yqw123besc45hscp">

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

Если не хочешь дожидаться завершения текущей сессии у пользователя для генерации нового токена, ты можешь отловить успешно прошедший валидацию пост запрос и генерировать новый токен. А не менять каждый раз при обновлении страницы - это уже лишнее.
________
посл. ред. 11.08.2021 в 22:21; всего 1 раз(а); by 668582623
PAIN , да изобретать можно как угодно но суть то от этого не смениться .
________
посл. ред. 11.08.2021 в 23:07; всего 1 раз(а); by Mr.Max
668582623 , вариантов можно придумать уйму но ведь каждый пишет под себя как ему удобно :)
Mr.Max , то что я предложил довольно таки оптимальный вариант. Так-то в браузерах можно блокировать запись в куки - в таком случае твоя csrf защита тут же сломается.
________
посл. ред. 11.08.2021 в 23:15; всего 1 раз(а); by 668582623
Mr.Max (11.08.2021 в 23:06) PAIN , да изобретать можно как угодно но суть то от этого не смениться .
Ну так разработчики php стараются для вас, делают функции удобнее и безопаснее, а вы в 2021:
php
   <?php md5(time()); ?>   
Онлайн: 3
Время:
Gen. 0.1125
(c) Bym.Guru 2010-2026