Новое в Symfony 3.2: Улучшения HttpFoundation

  • Добавлена поддержка SameSite cookie аттрибута
  • Улучшены заголовки кэша
  • Добавлена утилитаisMethodIdempotent()

Добавлена поддержка SameSite cookie аттрибута

Новый cookie атрибут называется same-site позволяет приложениям исключить использование третьей стороной для любого cookie. Это помогает защитить пользователей от CSRF атак, потому что без cookie, злоумышленники не могут видеть, что Вы вошли в систему на веб-сайты при атаке.

В Symfony 3.2, конструктор класса Cookie добавлен девятый аргумент с именем $sameSite, который может принимать любое из значений, определенных в константе Cookie::SAMESITE_LAX и Cookie::SAMESITE_STRICT:

use Symfony\Component\HttpFoundation\Cookie;

$cookie = new Cookie(..., Cookie::SAMESITE_LAX);

Strict режим запрещает любое кроссайтовое использование cookie. В lax режиме, некоторые запросы GET верхнего уровня допускаются, например, нажатие ссылки на другой сайт или отправки с формы методом GET.

Улучшены заголовки кэша

Ранее, если вы выполнили 301 редирект и не установили заголовок кэша, заголовок no-cache добавлялся самой Symfony. В Symfony 3.2 это поведение изменилось, и теперь 301 редиректы не добавляют заголовок no-cache автоматически, но они поддерживают  установку его в явном виде.

Symfony 3.2 также устраняет другую непоследовательность, связанную с заголовками кэша. Когда заголовок no-cache присутствует, Symfony теперь добавляет private директиву, так что ответ содержит no-cache, private, а не просто no-cache.

Добавлена утилита isMethodIdempotent()

HTTP безопасными методами являются те, которые просто получают ресурсы, но не позволяют изменять, удалять или создавать их (только GET и HEAD, методы считаются безопасными). Класс Request включает в себя метод запроса на isMethodSafe (), чтобы проверить, является ли безопасным данный HTTP метод или нет.

Идемнотентными HTTP методами являются те методы, которые могут быть использованы в виде последовательности нескольких запросов и получить тот же результат без какой-либо побочного эффекта. Например PUT является идемнотентным, поскольку после двух идентичных запросов ресурс будет иметь то же самое состояние (оно всегда заменяется), но POST не идемпотентен, потому что после двух одинаковых запросов вы можете в конечном итоге иметь дело с двумя ресурсами, которые имеют одинаковое содержание.

В Symfony 3.2 мы добавили новый метод, называемый метод isMethodIdempotent(), чтобы проверить, является ли данный метод HTTP идемнотентным или нет.

Источник: https://symfony.com/blog/new-in-symfony-3-2-httpfoundation-improvements

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

Ваш адрес email не будет опубликован.

7 + 4 =