1

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

如果我有一个表格:

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

我的问题:如果 somepage 只接受 content-type: application/json,这足以阻止 CSRF 吗?我确信我必须为每个用户生成一个唯一的令牌。但是,如果仅通过内容类型进行保护,那么有人如何能够违反 CSRF?

4

1 回答 1

4

简短的回答:可能

长答案:不要指望它。

有关更完整的解释,请参阅此问题,但是虽然内容类型检查今天有效,但您可以通过将有效的 JSON 作为文本/纯文本发布非常接近,这可能会被某些后端错误地解析。

此外,如果enctype='application/json'成为有效的 HTML,您的整个系统就会被淘汰。

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

于 2013-05-28T07:38:53.490 回答