【问题标题】:Disable CSRF only for dev env in Symfony2仅对 Symfony2 中的开发环境禁用 CSRF
【发布时间】:2015-11-08 11:51:06
【问题描述】:

在一个 SF2 经典应用程序中,我如何禁用表单登录 CSRF 仅用于开发环境?

config.yml:

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }

framework:
    #esi:             ~
    translator:      { fallback: en_US }
    secret:          %secret%
    router:
        resource: "%kernel.root_dir%/config/routing.yml"
        strict_requirements: "%kernel.debug%"
    form:            true
    csrf_protection: true

security.yml:

firewalls:
    dev:

    pattern:                        ^/(_(profiler|wdt)|css|images|js)/
    security:                       false

login:
    pattern:                        ^/user/(login|reset-request|send-email|check-email)$
    provider:                       chain_provider
    anonymous:                      true

main:
    pattern:                        ^/
    provider:                       chain_provider
    form_login:
        csrf_provider: form.csrf_provider
        check_path:                 my_security_check
        login_path:                 my_security_login
    logout:
        path:                       my_security_logout
    remember_me:
        key:                        %secret%
        name:                       MYKEY
        lifetime:                   3600
    anonymous:                      false

security_dev.yml:

firewalls:
main:
    form_login:
        check_path:                 my_security_check
        login_path:                 my_security_login

目的是通过包含security_test 覆盖安全配置来取消设置csrf_provider

config_dev.yml:

imports:
    - { resource: config.yml }
    - { resource: security_dev.yml }

我无法将csrf_provider 设置为 null 或 false,因为 SF2 不会接受这些值。 但有了这个包含,关键就一直存在。

所以问题可能更笼统:我如何才能完全覆盖包含另一个 yaml 的配置数组?

提前致谢,

JM

【问题讨论】:

    标签: symfony yaml


    【解决方案1】:

    这让我想知道您为什么要禁用 CSRF 进行开发,但如果您确定要这样做,它实际上很简单。只需覆盖config_dev.yml中的设置:

    framework:
        # ...
        csrf_protection: false
    

    【讨论】:

    • 我真正需要的是为我的测试环境禁用 CSRF,因为当测试机器超载时,我的一些行为特性会因为 CSRF 而失败,我想在我的问题中更简单;)。您的解决方案是禁用整个应用程序的 CSRF,而不是唯一的登录表单,但我会试一试。谢谢。
    • 您的问题是在 SF2 经典应用程序中,我如何才能禁用仅用于开发环境的表单登录 CSRF? 没有关于那里的登录表单。 ;)
    • 可能标题不够清晰。我想在firewalls部分中“取消设置”登录表单的配置键crsf_provider
    猜你喜欢
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 2012-08-05
    • 1970-01-01
    相关资源
    最近更新 更多