Devise3 里面增加了 secret_key 的设置,我有点不是很明白为什么要加这个设置,再把 token 加密一遍。
lockable.rb 里面,验证 token 的时候,会把传到服务器的 unlock_token 用 secret_key digest 一下,然后再和数据库里面保存的比对。
这样的目的是什么?为什么不能直接和数据库里面的 token 比对?是否是让数据库保存的密钥信息都是加密的,防止数据库泄漏之后,有人利用这个数据吗?
应该是防止 Timing Attack 参考 http://drops.wooyun.org/papers/1404
防止 token 被管理员盗用吧。
防 Timing attack
Timing attack。。。原来如此!没有想到字符串比较的时间消耗问题。