Php 在Symfony中找不到路由时,访问控制似乎被忽略

Php 在Symfony中找不到路由时,访问控制似乎被忽略,php,security,access-control,symfony,Php,Security,Access Control,Symfony,我们的symfony3项目有以下安全设置: firewalls: myfirewall: pattern: ^/myapi stateless: true http_basic: ~ anonymous: false access_control: - { path: ^/myapi, ips: ['192.168.0.155'], roles: ROLE_USER } - { path: ^/myapi,

我们的symfony3项目有以下安全设置:

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

这样,坏人就能够确定资源是否存在

有人知道为什么会发生这种情况吗?我有点不知所措


谢谢

嗯,好像是法比恩干的:-/

虽然这确实不是一个大的安全问题,但这并没有给我们以我们想要的方式设计API的自由。

通过使用编译器过程替换“security.firewall”类,我们能够更改订阅事件的优先级,因此现在在路由器侦听器之前调用防火墙侦听器。到目前为止对我们有效。。