Назначение интерфейсов глаголов http

9

В Magento 2.3 есть несколько интерфейсов для всех http глаголов

  • Magento\Framework\App\Action\HttpPostActionInterface
  • Magento\Framework\App\Action\HttpGetActionInterface,
  • ...

Все они пусты и внедрены Magento\Framework\App\ActionInterface.
Я также обнаружил, что все они сопоставлены app/etc/di.xmlс параметром, Magento\Framework\App\Request\HttpMethodMapи многие контроллеры реализуют эти интерфейсы.
Но не все контроллеры.
Это все, что я мог найти о них.
Какова их цель?

Мариус
источник

Ответы:

6

Я считаю, что это должно улучшить способ, которым контроллеры обрабатывают свою проверку. У нас было довольно много патчей SUPEE, исправляющих такие вещи, как валидация ключа формы, игнорируемая GET-запросом или чем-то подобным. Этот метод должен помочь предотвратить их.

Чтобы улучшить безопасность и логистику, нам нужно разрешить ограничивать Действия только обработкой запросов определенными методами HTTP и добавить эти ограничения к как можно большему количеству существующих Действий. Существует много уязвимостей, вызванных действиями, обрабатывающими как запросы GET, так и POST, что позволяет обходить проверки безопасности, такие как проверка ключа формы. Кроме того, ограничение действий обработкой запросов только определенными методами послужит самодокументированием для классов действий и улучшит согласованность серверной части для клиентского кода и функциональных тестов.

https://github.com/magento/architecture/blob/514952e8883234140071ec70f3b696d8267d52d0/design-documents/allowed-http-methods-for-actions.md

Люк Роджерс
источник