有谁知道如何在Symfony中创建唯一的CSRF_token?我在security.yml文件中使用了以下配置,并在表单中创建了默认的Symfony CSRF_token。
firewalls:
login:
pattern: ^/demo/secured/login$
security: false
docova:
pattern: /.*
form_login:
login_path: %d.login_path%
check_path: %d.check_path%
csrf_provider: form.csrf_provider
csrf_parameter: _csrf_token
intention: My_Private_String
default_target_path: %d.default_target_path%
success_handler: myproject.security.authentication.success_handler
logout:
path: /MyProject/logout
target: /MyProject
anonymous: true
security: true
docova: true
在我的登录文件中我有这个:
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}" />
欣赏它。
答案 0 :(得分:1)
csrf令牌生成基于表单的名称和会话ID,因此csrf对于每个会话的每个表单都是唯一的,如果您想要为每个表单提供真正独特的内容,那么您需要基本上覆盖创建csrf的方法,并传入一个随机字符串来代替表单名称。然后,您需要保存该随机字符串并将其与会话ID匹配,以便在提交表单时验证csrf。