断点调试最强大,可以结合 proxy 做一个类似 fiddler 的东东?
#27 楼 @happypeter 好贵
这个问题的原因不是因为 Ruby 里变量出现过就是有定义的么,不一定要执行到。比如:
if false
var = 1
end
puts defined?(var) # => local-variable
还有一个例子是a = a || 1
回到 a = a || 1。这里 Ruby 先看到了 a 出现在赋值符号的左手边,于是创建出变量 a,值为 nil;接下来对赋值符号右手边求值,nil || 1 的结果是 1;然后完成赋值,a 的值就是 1 了。单独的 a || 1 则没这待遇,得看前面有没有别的地方让 a 存在,不然就会出错。
#20 楼 @luikore 看commit message是说 1.6+ 会默认用 JSON,现在使用的 rack 还都是 1.5 的。还加了一个 okjson,不知道是不是速度快一些?
#3 楼 @keating 因为 Rails 在三年前已经 fix 了这个问题:https://github.com/rails/rails/commit/5e6dab8b34152bc48c89032d20e5bda1511e28fb
#1 楼 @bhuztez 大部分 Rails 项目是在 cookie 里存 session 的,因为那是默认设置。
写了一篇博客解释一下:http://hooopo.herokuapp.com/posts/1
#15 楼 @luikore 如果用 Passenger 或 Unicorn 开启OOBGC 客户端遇到 Ruby GC 的概率会很低的。会更利于这种 timing attrack 攻击。
其实 Rails 的 session 是没有加密的(前面那串就是简单的序列化),只做了防串改/伪造。而防伪造的唯一工具就是那个 secret_token,但是大多数开源项目是直接把这个东西放到源码库里的。所以,大部分 Rails 开源项目的 session 是很容易伪造的。不过 devise 使用 warden 这样的 gem 做法好像有些不同,没只细看。像 Ruby China 的 session 前半部分反序列化回来是这样的:
"session_id"=>"b8d724a***7f5c27494a51906",
"_csrf_token"=>"oWVFfkGLJ***MelmIzFnQ+GpFkE7wtn2IM2Wn0=",
"warden.user.user.key"=>["User", [8], "$2a$****W9LTJb2zsX2y."]}
Rails4 貌似在引入防 cookie 篡改/伪造的机制,和 session 原理一样。
跑题:http://python-china.org/member/hooopo 这个漏洞还没修,怎么才能拿到站长 session。。。
Rack::Session::Cookie 以前是可以伪造的:https://github.com/rack/rack/commit/054bc0203012c0e3ad6e1385cebe9e5d3d072b11
不知道还有没有了。。
没代码怎么提供线索啊
I have used CarrierWave and after some hours of frustration I'm switching to Paperclip.
Here are the problems I have seen with CarrierWave:
paperclip
gem ins triez
Fetching: triez-0.1.gem (100%)
Building native extensions. This could take a while...
Successfully installed triez-0.1
1 gem installed
Awesome!
你用 flash 保存的?
awesome
#16 楼 @lmorenbit 是的。关键是如何制止邻居扔屎。去骂哥哥蠢或是骂姐姐蠢都是没意义的。
其实我觉得第二种观点并不比第一种高到哪里去。但是微薄/推特上那些连别人观点都没看明白就开始贴标签的也是让人讨厌的。
hehe
#8 楼 @Saito http://rails-erd.rubyforge.org/ 这个也挺好用。不过其实我都不看的,直接看数据库里的字段。。
datamaper
dry is not always a good idea.
哪有要摧毁之前还公布出来的。
是蓝朋友么...