什么是Rails中的真实性令牌?


当前回答

真实性令牌是rails防止“跨站请求伪造(CSRF或XSRF)攻击”的方法。

简单地说,它确保对web应用程序的put / POST / DELETE(可以修改内容的方法)请求是由客户端浏览器发出的,而不是来自第三方(攻击者),后者有权访问在客户端创建的cookie。

其他回答

需要authenticity_token的方法

在post, put和delete等幂等方法的情况下需要authenticity_token,因为幂等方法对数据有影响。

为什么需要它

它需要防止邪恶的行为。Authenticity_token存储在会话中,每当在web页面上创建用于创建或更新资源的表单时,真实性令牌存储在隐藏字段中,并与服务器上的表单一起发送。在执行操作之前,用户发送的authenticity_token将与存储在会话中的authenticity_token进行交叉检查。如果authenticity_token相同,则进程继续,否则不执行操作。

因为真实性令牌是如此重要,在Rails 3.0+你可以使用

 <%= token_tag nil %>

创建

<input name="authenticity_token" type="hidden" value="token_value">

在任何地方

什么是authentication_token ?

这是一个由rails应用程序使用的随机字符串,以确保用户是从应用程序页面请求或执行操作,而不是从其他应用程序或站点。

为什么authentication_token是必要的?

保护您的应用程序或站点免受跨站点请求伪造。

如何将authentication_token添加到表单?

如果您使用form_for标记生成表单,则会自动添加authentication_token,否则您可以使用<%= csrf_meta_tag %>。

真实性令牌的设计使您知道您的表单是从您的网站提交的。它是由运行它的机器生成的,具有唯一的标识符,只有您的机器知道,因此有助于防止跨站请求伪造攻击。

如果您只是在rails拒绝AJAX脚本访问方面遇到困难,那么您可以使用

<%= form_authenticity_token %>

在创建表单时生成正确的令牌。

您可以在文档中阅读更多关于它的信息。

真实性令牌是rails防止“跨站请求伪造(CSRF或XSRF)攻击”的方法。

简单地说,它确保对web应用程序的put / POST / DELETE(可以修改内容的方法)请求是由客户端浏览器发出的,而不是来自第三方(攻击者),后者有权访问在客户端创建的cookie。