Php 在特定防火墙上禁用CSRF
我有一个应用程序,允许用户通过2个不同的渠道访问Php 在特定防火墙上禁用CSRF,php,symfony,oauth,csrf,Php,Symfony,Oauth,Csrf,我有一个应用程序,允许用户通过2个不同的渠道访问 带小枝的正常 通过FOSRestBundle恢复完整-example.com/api/*地址 我启用了CSRF保护,因为我想在第一种情况下使用它 framework: csrf_protection: true 但是。。。我需要在向/api/*地址发送请求时禁用CSRF保护,因为在本例中,我使用OAuth登录 我可以禁用特定防火墙的CSRF保护吗 我的防火墙: firewalls: oauth_token:
- 带小枝的正常
- 通过FOSRestBundle恢复完整-example.com/api/*地址
framework:
csrf_protection: true
但是。。。我需要在向/api/*地址发送请求时禁用CSRF保护,因为在本例中,我使用OAuth登录
我可以禁用特定防火墙的CSRF保护吗
我的防火墙:
firewalls:
oauth_token:
pattern: ^/api/oauth/v2/token
security: false
api:
pattern: ^/api/
fos_oauth: true
stateless: true
anonymous: false
main:
pattern: ^/
form_login:
provider: chain_provider
csrf_provider: form.csrf_provider
logout: true
anonymous: true
当我向/api/server发送POST请求时,返回错误:
CSRF令牌无效。请尝试重新提交表单
我需要为
api
防火墙禁用此保护,并将其保留在main
中。有可能吗?您可以根据用户情况处理此问题:
当构建一个应用程序,既要通过HTML表单也要通过RESTAPI处理表单时,就会遇到CSRF令牌验证的问题。在大多数情况下,有必要为HTML表单启用它们,但将它们用于RESTAPI是没有意义的。因此,有一个表单扩展,用于禁用具有特定角色的用户的CSRF验证。当然,这需要RESTAPI用户对自己进行身份验证并分配一个特殊角色
fos_rest:
disable_csrf_role: ROLE_API