分享 拥抱 Rails 4 -- 详解新的变化

nightire · 2013年03月23日 · 最后由 doun 回复于 2013年07月23日 · 8456 次阅读

地址:https://gist.github.com/nightire/5227819

昨天开始整理 Rails 4 带来的新变化,分享给大家。写这个挺累的,要到处找资料,所以速度不是很快,请多包涵!文档的大纲基于 Code School 的 Rails 4 教程(没钱订阅的兄弟至少能看个总结了),然后扩充我知道的和能找到的其他内容,欢迎大家来纠错和补充,让这份文档更完善。


@edokeh @hooopo

有朋友问我第一点是不是想说 CSRF 而不是什么 XSS,我估计可能大家 Rails 用得多了,对 CSRF 比较敏感,实际上它和 XSS 是有区别的。当然了,若非我看了 CodeSchool 的新教程,我可能也不知道这个区别,所以第一点并没有“写”错——因为我是按照 CodeSchool 的说法来写的。当然,我也觉得例子中的 GET 更像是 请求伪造 而不是 脚本攻击,所以我已经向 CodeSchool 提交了 Issue,具体对错与否请等待对方的答复。

具体的区别请大家移步 Wikipedia:CSRFXSS

核心的区别总结一句话就是:

Unlike cross-site scripting (XSS), which exploits the trust a user has for a particular site, CSRF exploits the trust that a site has in a user's browser.

另外,我发现多数人把 CSRF 称作:跨站脚本攻击,这实际上是不太准确的。真正的跨站脚本攻击是 XSS,CSRF 或许应该翻译成跨站请求伪造

跨站脚本攻击发生的前提是你可以不在目标网站内,只要你知道目标网站(及其可以被利用的漏洞就可以);而跨站请求伪造则是发生于已经在浏览器里打开的站点,重点就在“请求”两字。

另有一篇博客解释地也比较清晰:

http://intrepidusgroup.com/insight/2007/09/csrf-is-not-xss/


最新更正

第一点是 CSRF ,而不是 XSS。CodeSchool 已经证实他们的视频教程有误,应该很快就会修正。

对给大家带来的困扰表示歉意,原文已经做出改正。

共收到 27 条回复

好棒 之前只是看过Ruby 2,还没看过Rails 4的呢

感谢分享

支持,看了rails的mindmap,细分的好多。大家一起来完善。

http://www.mindmeister.com/210352774/rails-4-0

真不错!4 对于很多人来说有不少吭,这样总结整理一下对大家非常有帮助。

ActiveRecord finders 的 find_by 其实在 Mongoid 中一直是这样用的

感谢分享~!

能否介绍下单页app的情况?

支持一下,虽然已经看过了。Rails 4的更新不算大,但细节非常多。记得以前看过一个树状图,然后顺着那个图把感兴趣的都看了一遍,花了不少时间…… LZ为什么不用octopress呢,这种博客性质的文章用octopress挺方便的。markdown文件放在本机方便自己搜索,推到服务器上就是博客。

第一点一下没看明白,琢磨了几下,你是不是想说的是防范 CSRF 攻击?

感谢分享。。

CSRF是XSS(跨站脚本攻击)中的一种方式,主从关系

#12楼 @swordray 很新鲜的说法,不太清楚,wikiphdia没有提到这一点,倒是我在文末贴的那篇博客说的很清楚:CSRF is NOT XSS

CSRF 是 跨站请求伪装,作用方式在 HTTP Request 范围内,当然了伪造请求这件事情可以发生在脚本之中,所以我觉得你说的有一定道理,算是 XSS 的一种。

#13楼 @nightire 我们的两种说法不矛盾

CSRF != XSS

class CSRF < XSS; end CSRF.new.is_a?(XSS)

《白帽子谈web 安全》里对csrf 有比较详细的介绍

very nice

我的理解是这样: XSS:网站程序漏洞 - 对危险字符过滤不严,导致执行恶意javascript CSRF:非网站程序漏洞 - 浏览器解析1个URL,比如img标签,但src恶意构造,包含GET参数,浏览器会同样执行该请求,而且还是以用户身份。

感谢分享

rails早就迷失方向了,不要浪费时间了

#21楼 @nightire 估计20楼说的是铁道部

好期待Rails 4,更符合人类习惯,特别是ActiveRecord的那些改动,真是说不出的舒爽

#7楼 @chenge Beta1 release说明很扯的说了句 Rails is of course still a great JSON server for people who want to build client-side JS views, but with the progress we've made for Rails 4.0, you certainly won't need to go down that route just to have a super fast application.

感谢楼主

27楼 已删除
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册