我需要在Rails中将一小段数据(少于10个字符)存储在Cookie中,并确保其安全。我不希望任何人能够读取该数据或注入自己的数据(因为这会开放应用程序受到许多攻击)。我认为加密Cookie内容是可行的方式(我是否还应该签名?)。最好的方法是什么?
目前,我正在执行以下操作,看起来很安全,但许多看起来比我更懂安全性的人发现它并不真正安全。
我以以下方式保存秘密:
目前,我正在执行以下操作,看起来很安全,但许多看起来比我更懂安全性的人发现它并不真正安全。
我以以下方式保存秘密:
encryptor = ActiveSupport::MessageEncryptor.new(Example::Application.config.secret_token)
cookies[:secret] = {
:value => encryptor.encrypt(secret),
:domain => "example.com",
:secure => !(Rails.env.test? || Rails.env.development?)
}
然后我像这样阅读它:
encryptor = ActiveSupport::MessageEncryptor.new(Example::Application.config.secret_token)
secret = encryptor.decrypt(cookies[:secret])
这样安全吗?有更好的方法吗?
更新:我知道Rails的会话如何保证安全,既通过对cookie进行签名,也可以选择将会话内容存储在服务器端,我确实使用会话来完成它的功能。但是我的问题是关于存储cookie的,这是一条我不想在会话中保存的信息,但我仍然需要它是安全的。