安全性:总的来说,使用内容类型足以防止CSRF?

时间:2013-05-28 07:11:37

标签: security csrf csrf-protection

正如问题所示,我有一个使用Jetty的通用网站,我被要求提供CSRF保护。

如果我有表格:

<form action="http://somedomain.com/somepage">
    <input ....>
</form>

我的问题:如果某个页面只接受内容类型:application / json,这是否足以阻止CSRF?我确信我必须为每个用户生成一个唯一的令牌。但是,如果只通过内容类型进行保护,有人会如何违反CSRF?

1 个答案:

答案 0 :(得分:4)

简短回答:可能

答案很长:不要依赖它。

有关更完整的说明,请参阅this question,但是当内容类型检查今天工作时,您可以通过将有效的JSON发布为text / plain而非常接近,这可能会被某些人错误地解析后端。

此外,如果enctype='application/json'成为有效的HTML,那么整个系统都会显示出来。

虽然这是一个很好的第一步,但如果您真的想要防范CSRF攻击,请实施适当的CSRF令牌系统。