正如问题所示,我有一个使用Jetty的通用网站,我被要求提供CSRF保护。
如果我有表格:
<form action="http://somedomain.com/somepage">
<input ....>
</form>
我的问题:如果某个页面只接受内容类型:application / json,这是否足以阻止CSRF?我确信我必须为每个用户生成一个唯一的令牌。但是,如果只通过内容类型进行保护,有人会如何违反CSRF?
答案 0 :(得分:4)
简短回答:可能
答案很长:不要依赖它。
有关更完整的说明,请参阅this question,但是当内容类型检查今天工作时,您可以通过将有效的JSON发布为text / plain而非常接近,这可能会被某些人错误地解析后端。
此外,如果enctype='application/json'
成为有效的HTML,那么整个系统都会显示出来。
虽然这是一个很好的第一步,但如果您真的想要防范CSRF攻击,请实施适当的CSRF令牌系统。