ruby-on-rails – Rails中签名和加密的cookie有什么区别?

发布时间:2019-04-23 整理:脚本之家
脚本之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails中签名和加密的cookie有什么区别?脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随脚本之家小编过来看看吧!
ActionDispatch :: Cookies的文档为签名cookie和加密cookie提供了几乎相同的描述.看来两者都使用secrets.secret_key_base来防止客户端篡改. http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html

签名饼干

Sets a signed cookie,which prevents users from tampering with its value.
The cookie is signed by your app’s secrets.secret_key_base value.
It can be read using the signed method cookies.signed[:name]

cookies.signed[:user_id] = current_user.id

加密的cookie

Sets an encrypted cookie value before sending it to the client which
prevent users from reading and tampering with its value.
The cookie is signed by your app’s secrets.secret_key_base value.
It can be read using the encrypted method cookies.encrypted[:name]

cookies.encrypted[:discount] = 45

我的问题是:两者有什么区别?

你什么时候想用另一个?

解决方法

这很微妙,但答案在于您提供的文档.签名的cookie只能防止篡改,而加密的cookie可以防止读取和篡改.

更具体地说,签名cookie调用ActiveSupport :: MessageVerifier将摘要(使用secret_key_base生成)附加到cookie.如果修改了cookie的值,则摘要将不再匹配,并且在不知道secret_key_base的值的情况下,无法对cookie进行签名.然而,cookie的值仅仅是base64编码,任何人都可以阅读.

加密的cookie称为ActiveSupport :: MessageEncryptor,用于在生成摘要之前实际加密cookie的值.与已签名的cookie类似,如果修改了cookie的值,但如果没有secret_key_base,则无法解密cookie的值.

至于何时使用加密cookie和签名cookie,它归结为您存储在cookie中的信息的敏感性.如果您想要防范的是有人修改cookie,那么签名 – 但如果您还需要保密数据,请对其进行加密.

总结

以上是脚本之家为你收集整理的ruby-on-rails – Rails中签名和加密的cookie有什么区别?全部内容,希望文章能够帮你解决ruby-on-rails – Rails中签名和加密的cookie有什么区别?所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

脚本之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ” ,选择关注!
精选程序员所需精品干货内容!

脚本之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ”
精选程序员所需精品干货内容!