Як обмежити брандмауери за конкретним запитом

Дата оновлення перекладу 2022-12-22

Як обмежити брандмауери за конкретним запитом

При використанні компонента Security, брандмауери вирішуватимуть, чи оброблятимуть вони запит, засновуючись на результаті співставника запитів: перший брандмауер, який співпадатиме із запитом, обробить його.

Останній брандмауер може бути сконфігурований без будь-якого співставника, щоб обробляти кожний вхідний запит.

Обмеження за конфігурацією

Більшу частину часу вам не потрібно створювати співставники самостійно, так як Symfony може зробити це за вас, засновуючись на конфігурації брандмауера.

Note

Ви можете використати будь-яке з наступних обмежень окремо або поєднувати їх, щоб отримати бажану конфігурацію брандмауера.

Обмеження за шляхом

Це обмеження за замовчуванням, яке обмежує брандмауер, щоб він був ініціалізований лише якщо шлях запиту співпадає зі сконфігурованим pattern.

  • YAML
  • XML
  • PHP
1
2
3
4
5
6
7
8
# config/packages/security.yaml

# ...
security:
    firewalls:
        secured_area:
            pattern: ^/admin
            # ...

pattern - це регулярний вираз. У цьому прикладі, брандмауер буде активовано лише якщо шлях починається (у звʼязку із символом регулярного виразу ^) з /admin. Якщо шлях не співпадає з цим патерном, брандмауер не буде активовано і наступні брандмауери матимуть можливість бути співставленими з цим запитом.

Обмеження за хостом

Якщо співставлення лише за pattern недостатньо, то запит можна також співставити з host. Коли встановлена опція конфігурації host, брандмауер буде обмежено так, щоб запускатися лише якщо хост запиту співпадає з конфігурацією.

  • YAML
  • XML
  • PHP
1
2
3
4
5
6
7
8
# config/packages/security.yaml

# ...
security:
    firewalls:
        secured_area:
            host: ^admin\.example\.com$
            # ...

host (як і pattern) - це регулярний вираз. У цьому прикладі, брандмауер буде активовано лише якщо хост повністю співпадає з іменем хосту admin.example.com (через символи регулярного виразу ^ та $). Якщо імʼя хосту не співпадає з цим патерном, брандмауер не буде активовано, а наступні брандмауери матимуть можливість бути співставленими з цим запитом.

Обмеження за HTTP-методами

Опція конфігурації methods обмежує ініціалізацію брандмауера за наданими HTTP-методами.

  • YAML
  • XML
  • PHP
1
2
3
4
5
6
7
8
# config/packages/security.yaml

# ...
security:
    firewalls:
        secured_area:
            methods: [GET, POST]
            # ...

У цьому прикладі, брандмауер буде активовано лише якщо HTTP-метод запиту - GET або POST. Якщо цього методу немає у масиві дозволених методів, то брандмауер не буде активовано, і наступні брандмауери матимуть можливість бути співставленими з цим запитом.

Обмеження за сервісом

Якщо опції вище не підходять під ваші потреби, ви можете сконфігурувати будь-який сервіс, що реалізує RequestMatcherInterface як request_matcher.

  • YAML
  • XML
  • PHP
1
2
3
4
5
6
7
8
# config/packages/security.yaml

# ...
security:
    firewalls:
        secured_area:
            request_matcher: App\Security\CustomRequestMatcher
            # ...