Проверка csrf в waSystem На рассмотрении

1

Текущая проверка:

if (waRequest::post('_csrf') != waRequest::cookie('_csrf')) {
    throw new waException('CSRF Protection', 403);
}

Позволяет задать пустые значения и успешно пройти проверку.

Это можно исправить добавив параметр по умолчанию:

if (waRequest::post('_csrf', 1) !== waRequest::cookie('_csrf')) {
    throw new waException('CSRF Protection', 403);
}

8 комментариев

  • +1
    Genasyst Genasyst 27 мая 2018 05:18 #

    А что мне мешает передать одинаковые значения в пост и куки? Если уж делать, то через сессию, но она открывается не сразу. Чтобы усложнить алгоритм, нужно шифровать само название ячейки массива, чтобы боты не смогли использовать шаблон _csrf.

    • +1
      enso_studio@mail.ru enso_studio@mail.ru 27 мая 2018 06:15 #

      Это уже сложнее реализовать при csrf атаке.

      Хранение в сессии - верное решение, но хотя бы такой минимум сделали.

    • +1
      Syrnik.com Syrnik.com 27 мая 2018 13:12 #

      значение csrf вообще надо не полем формы, а в http заголовке запроса передавать. тогда можно защищать не только данные формы и не только post-запросы

    • +1
      Syrnik.com Syrnik.com 27 мая 2018 13:46 #

      Для форм можно ещё md5 названий полей посоленное csrf. Тогда будет сложнее добавить левое поле в форму

      • +1
        Genasyst Genasyst 27 мая 2018 13:58 #

        Мне кажется ты рассказываешь про мой код из одного проекта)))

        Добавить комментарий

        Чтобы добавить комментарий, зарегистрируйтесь или войдите