防止CSRF,无需任何形式的隐藏输入


protection against CSRF without hidden input in all forms

我想知道是否可以将crsf令牌放在<head>中,放在元标记或其他东西上,然后在我的服务器上访问它。这将真正简化流程,使其更加透明。我只是不知道怎么做。我真的希望在没有javascript的情况下完成这项工作。

我认为rails实现了类似的功能。。。也许用电子标签?

CSRF预防备忘单上列出了许多方法。一个不需要在每个表单上都有隐藏字段的方法是检查referer。请记住,缺少referer应被视为CSRF攻击,可能会导致一些隐私浏览器插件出现问题(这是非常罕见的)。

CSRF令牌的基本目的是在每次提交表单时将其传递回服务器。您将唯一的令牌传递到一个页面,当该页面上的表单提交时,令牌会随之返回。

如果您没有在表单中包含令牌(或者使用JavaScript以编程方式将令牌添加到当前位于页面其他位置的表单中),则不会将其发送回服务器。

也许更好的问题是:你真正想要实现的是什么?换句话说,为什么您不想在表单中包含CSRF令牌?在你的场景中,你想克服的缺点是什么?