美文网首页
Rails对于Cookie的加密和解密方法

Rails对于Cookie的加密和解密方法

作者: waynedeng | 来源:发表于2017-03-12 18:42 被阅读300次

    Rails的Session默认是存储在Cookies中的,Cookies显性存储在浏览器中,因此基于安全性的考虑,对Cookies进行加密是非常有必要的。

    比如session的数据{user_id: 100},加密存储在Cookies中可能就是这样的形式:

    BAh7BzoHaWRpBjoJbmFtZUkiC3cuZGVuZwY6BkVU--a547f29403e3d53174ddd88b7a3a64dfb8fdce6024d27105292fdbdf43c19f07
    

    具体实现的方法是使用ActiveSupport::MessageVerifier这个类。

    http://api.rubyonrails.org/classes/ActiveSupport/MessageVerifier.html

        @verifier = ActiveSupport::MessageVerifier.new('s3Krit', digest: 'SHA256')
    
        # 加密
        cookies[:remember_me] = @verifier.generate([@user.id, 2.weeks.from_now])
    
        # 解密
        id, time = @verifier.verify(cookies[:remember_me])
    

    这里的s3Krit,是加密用的secret,一般会使用特别长的随机字符,Rails中会使用config/secrets.yml中的设置,加密后被破解的几率就大大降低了。

    为什么会研究这个,因为前后端分离,打算在API调用的请求加上用户登录的验证,需要把用户的session数据加密记录在前端,调用API的时候请求的header中加上此数据。

    相关文章

      网友评论

          本文标题:Rails对于Cookie的加密和解密方法

          本文链接:https://www.haomeiwen.com/subject/xxhxnttx.html