登录表单中的CSRF保护

时间:2012-10-07 20:53:20

标签: security symfony login csrf

我正在使用Symfony 2.1来构建一个带有一点登录表单的网站。我正在this链接上学习该教程,但我没有看到任何关于CSRF保护的部分。但是,here有登录安全性的所有选项,最后我可以清楚地看到应该支持这种类型的保护。我不明白如何使用它

2 个答案:

答案 0 :(得分:2)

Here您可以在2.1版中详细了解CSRF保护


如果你没有为表单使用表单类,你可以简单地使用csrf_token函数(不要忘记在那里传递你的意图字符串,默认为空):

<input type="hidden" name="token" value="{{ csrf_token('') }}">

定义为here,默认情况下会执行this method


这些答案可能也对您有用:

https://stackoverflow.com/a/12054712/970721
https://stackoverflow.com/a/11632713/970721

答案 1 :(得分:0)

没有什么阻止您为登录创建表单类。您需要做的就是告诉登录控制器生成的字段的名称:

form_login:
    username_parameter: login[username]
    password_parameter: login[password]
    csrf_parameter:     login[_token]

并将表单的CSRF意图设置为authenticate

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults([
        'intention' => 'authenticate',
    ]);
}