Rails4:如何解密rails4会话cookie(给定会话密钥和秘密)

您所在的位置:网站首页 rc4加密密钥多少位 Rails4:如何解密rails4会话cookie(给定会话密钥和秘密)

Rails4:如何解密rails4会话cookie(给定会话密钥和秘密)

2023-04-02 11:57| 来源: 网络整理| 查看: 265

在Rails 3中,会话COOKIE可以使用base64解码轻松解码,但在Rails 4中,COOKIE被编码和加密.

我想知道如何读取编码和加密的rails 4 COOKIE(假设我们知道密钥库).

谢谢,

1> Dani..:

Rails 4使用AES-256根据您的应用程序使用密钥加密COOKIE secret_token_base.

以下是解密会话COOKIE的一般方案:

计算你的秘密密钥

Base 64解码COOKIE值

将解码后的COOKIE值拆分为" - ",这将产生两部分,第一部分是加密数据,第二部分是加密方案使用的初始化向量.Base 64独立地解码每个部分.

通过对密钥和初始化向量应用AES解密来解密加密数据.

我找不到一个可以轻松解密消息的网站(建议是受欢迎的),以编程方式可以这样做:

secret = OpenSSL::PKCS5.pbkdf2_hmac_sha1(app_secret_token, 'encrypted COOKIE', 1000, 64) encrypted_message = Base64.decode64(COOKIE_str) cipher = OpenSSL::Cipher::Cipher.new('aes-256-cbc') encrypted_data, iv = encrypted_message.split("--").map {|v| ::Base64.strict_decode64(v)} cipher.decrypt cipher.key = secret cipher.iv = iv decrypted_data = cipher.update(encrypted_data) decrypted_data

几个笔记:

此代码段几乎与middeware 使用的实际_decript方法实现ActiveSupport::MessageEncryptor相同ActionDispatch::COOKIEs.

从ActionDispatch :: Session :: COOKIEJar开始,这些都是Rails 4的特定内容:

如果您只设置了secret_token,那么您的COOKIE将被签名,但不会加密.这意味着用户无法在不知道应用的密钥的情况下更改他们的+ user_id +,但可以轻松阅读他们的+ user_id +.这是Rails 3应用程序的默认设置.

如果您设置了secret_key_base,您的COOKIE将被加密.这比签名COOKIE更进一步,因为加密的COOKIE不能被用户更改或读取.这是Rails 4中的默认开头.

是的,有一个区别 - "加密的COOKIE"字符串被用作生成密钥所需的盐(它可能被覆盖,但这是默认的盐),而`COOKIE_str`是实际的你想要解密的COOKIE.如果您不熟悉盐的概念,请查看:https://en.wikipedia.org/wiki/Salt_ (cryptography)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3