2015-11-08 75 views
2

在SF2經典應用程序中,如何禁用僅用於開發環境的表單登錄CSRF?禁用CSRF僅適用於Symfony2中的開發環境

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 

目的是通過重寫與安全配置取消設置csrf_provider包含security_test

config_dev.yml:

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

我不能設置csrf_provider爲空或假,因爲SF2不會接受這些值。 但是,隨着這個包容,關鍵始終存在。

所以這個問題可能會更一般:我如何完全覆蓋配置數組與另一個yaml包含?

由於通過提前

JM

回答

2

這讓我不知道爲什麼會要禁用CSRF的發展,但如果你確定要做到這一點,它實際上是非常簡單的事情。只是覆蓋該設置在config_dev.yml

framework: 
    # ... 
    csrf_protection: false 
+0

我真正需要的是禁用CSRF爲我的測試環境,因爲試機的時候是超載了我的一些貝哈特功能失敗,因爲CSRF的,我想在我的問題更簡單)。您的解決方案是禁用整個應用程序的CSRF,而不是唯一的登錄表單,但我會試一試。謝謝。 – jmleroux

+0

你的問題是*在一個SF2的經典應用程序中,如何禁用僅用於開發環境的表單登錄CSRF?*沒有關於登錄表單的信息。 ;) –

+0

也許標題不夠清楚。我想在「防火牆」部分「取消」登錄表單的配置鍵「crsf_provider」 – jmleroux

相關問題