2012-07-22 73 views
3

我想知道我是否可以将crsf标记置于<head>的元标记或其他位置,然后在我的服务器上访问它。这将真正简化流程并使其更加透明。我只是不知道如何。我真的希望在不涉及JavaScript的情况下做到这一点。对所有形式的隐藏输入的CSRF防护

我认为rails实现类似的东西......用etags也许吧?

回答

3

CSRF prevention cheat sheet上列出了很多方法。每个表单上不需要隐藏字段的是to check the referer。请记住,缺乏引用者应被视为CSRF攻击,并可能导致一些隐私浏览器插件(这是非常罕见的)的问题。

+0

是不是客户通知的引用者?那怎么能安全? – 2012-07-23 00:33:05

+1

@ hugo_leonardo确切地说,受害者的浏览器会报告请求源自哪里。尽管欺骗引用者标题是微不足道的,但在CSRF攻击中不可能欺骗引用者。 – rook 2012-07-23 03:45:54

+0

如果某人能够伪造来自同一网站的请求, G。通过利用像''这样非常有限的XSS漏洞? – Gumbo 2012-07-23 16:42:10

3

CSRF令牌的根本目的是在每次提交表单时将其交付给服务器。您将唯一标记传递给页面,并且当该页面上的表单被提交时,令牌会随之返回。

如果您不在表单上包含令牌(或使用JavaScript以编程方式向当前页面上其他地方的表单添加令牌),它将不会被发送回服务器。

也许更好的问题是:你真的想完成什么?换句话说,你为什么不想在表单中包含一个CSRF令牌?您希望在您的方案中克服的缺点是什么?

+0

我想在我的框架中使保护透明。这只是令人讨厌的在每个表单上放置一个令牌。只是试图找到一个更自动的替代方案... – 2012-07-22 21:33:34

+0

@hugo_leonardo - 听起来像你想在你的框架中有一个窗体帮助函数。 – Quentin 2012-07-22 21:34:24

+0

更透明。哈哈〜我可以使用cookies吗?这听起来像是对我来说是一样的概念:生成一个令牌,取回令牌,在必要时刷新令牌...... – 2012-07-22 21:36:19