如何实现CSRF保护吗

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.0,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

如何实现CSRF保护吗

CSRF——或者跨站点请求伪造——是一个恶意用户的方法试图让你合法用户在不知情的情况下提交数据,他们不打算提交。幸运的是,可以阻止CSRF攻击使用CSRF令牌在你的形式。

好消息是,默认情况欧宝app在哪里找下,Symfony嵌入和验证CSRF令牌自动为你。欧宝娱乐app下载地址这意味着您可以利用CSRF保护什么事情都不做。事实上,每个表单在本章利用CSRF保护!

CSRF保护是通过添加一个表单隐藏字段——调用_token默认情况下,包含一个值,只有你和你的用户知道。这可以确保用户——而不是其他实体——提交给数据。欧宝娱乐app下载地址Symfony自动验证这个令牌的存在和准确性。

_token字段是一个隐藏字段,如果包括会自动呈现form_end ()函数模板,它确保所有un-rendered字段输出。

谨慎

因为令牌是存储在会话中,一个会话开始自动就呈现一种形式与CSRF保护。

CSRF令牌可以定制form-by-form基础上。例如:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
使用欧宝娱乐app下载地址\组件\OptionsResolver\OptionsResolver;TaskType扩展AbstractType{/ /……公共函数configureOptions(OptionsResolver美元解析器){美元解析器- >setDefaults (数组(“data_class”= >“实体AppBundle \ \任务”,“csrf_protection”= >真正的,“csrf_field_name”= >“_token”,/ /一个唯一键来帮助生成令牌的秘密“csrf_token_id”= >“task_item”));}/ /……}

禁用CSRF保护,设置csrf_protection选择错误的。也可以在您的项目在全球范围内的定制。有关更多信息,请参见形式配置参考部分。

请注意

csrf_token_id选项是可选的但是,极大地增强了安全生成的令牌使它不同形式。

谨慎

CSRF标记是不同的对于每一个用户。这就是为什么你需要谨慎,如果你试图缓存页面形式包括这种保护。有关更多信息,请参见缓存的页面包含CSRF保护形式

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。