- Добавлена поддержка 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