栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Rails CSRF Protection + Angular.js:protect_from_forgery让我注销POST

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Rails CSRF Protection + Angular.js:protect_from_forgery让我注销POST

我认为从DOM读取CSRF值不是一个好的解决方案,这只是一种解决方法。

这是angularJS官方网站http://docs.angularjs.org/api/ng.$http的文档格式 :

由于只有在您的域上运行的Javascript才能读取cookie,因此可以确保您的服务器XHR来自在您的域上运行的Javascript。

要利用此优势(CSRF保护),您的服务器需要在第一个HTTP GET请求上的名为XSRF-
TOKEN的Javascript可读会话cookie中设置令牌。在后续的非GET请求上,服务器可以验证cookie是否与X-XSRF-TOKEN
HTTP标头匹配

这是基于这些说明的我的解决方案:

首先,设置cookie:

# app/controllers/application_controller.rb# Turn on request forgery protectionprotect_from_forgeryafter_action :set_csrf_cookiedef set_csrf_cookie  cookies['XSRF-TOKEN'] = form_authenticity_token if protect_against_forgery?end

然后,我们应该在每个非GET请求上验证令牌。
由于Rails已经使用类似的方法构建,因此我们可以简单地重写它以附加我们的逻辑:

# app/controllers/application_controller.rbprotected  # In Rails 4.2 and above  def verified_request?    super || valid_authenticity_token?(session, request.headers['X-XSRF-TOKEN'])  end  # In Rails 4.1 and below  def verified_request?    super || form_authenticity_token == request.headers['X-XSRF-TOKEN']  end


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/633232.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号