2016-03-16 3 views
1

Мы имеем следующие параметры безопасности для нашего symfony3 проекта:контроля доступа, кажется, игнорируется, если маршрут не найден в Symfony

firewalls: 
    myfirewall: 
     pattern: ^/myapi 
     stateless: true 
     http_basic: ~ 
     anonymous: false 

access_control: 
    - { path: ^/myapi, ips: ['192.168.0.155'], roles: ROLE_USER } 
    - { path: ^/myapi, roles: ROLE_NO_ACCESS } 

Кроме того, что есть в памяти поставщика. Это прекрасно работает при ударах маршрутов. Вызов/myapi/resource/123 защищен. Но, к сожалению,/myapi/res нет. Запрос к этому URI приводит к 404.

Таким образом, плохие парни могут определить, существуют ли ресурсы или нет.

Кто-нибудь знает, почему это происходит/что не так? Я немного невежественный.

Спасибо!

ответ

1

Хм, кажется, Фабьен сделал это: -/https://github.com/symfony/symfony/issues/8414

Хотя действительно не такая большая проблема безопасности, это не дает нам свободу создавать наш API, как мы хотим.

+0

Заменив класс «security.firewall» на использование пропусков компилятора, мы смогли изменить приоритет подписанных событий, поэтому прослушиватель брандмауэра вызывается перед слушателем роутера. http://symfony.com/doc/current/cookbook/bundles/override.html Работы для нас до сих пор .. – t11n

Смежные вопросы