是否有可能有人窃取记住令牌的哈希摘要并使用哈希摘要创建假cookie


Is it possible for someone to steal a hash digest of the remember token and create a fake cookie using the hashed digest?

因此,持久性 cookie 容易受到会话劫持,窃取 cookie 的方法之一是破坏包含 remember 令牌的数据库。防止这种情况发生的方法是存储 Remember 令牌的哈希摘要,而不是令牌本身。

我的问题是:为什么攻击者不能获取记住令牌和签名用户 ID 的哈希摘要,在浏览器中创建新的 cookie,并用被盗的哈希摘要填充这些 cookie? 因为据我了解,经过身份验证的BCrypt不会吗? 方法 在您的浏览器中搜索 cookie 并在看到被盗的哈希摘要时对其进行解密? 或者有没有办法让它检测饼干是用户制作的还是网站制作的?

  def current_user
    if (user_id = session[:user_id])
      @current_user ||= User.find_by(id: user_id)
    elsif (user_id = cookies.signed[:user_id])
      user = User.find_by(id: user_id)
      if user && user.authenticated?(cookies[:remember_token])
        log_in user
        @current_user = user
      end
    end

如果您只在数据库中存储 Remember 令牌的哈希值,并且攻击者可以从数据库中窃取此哈希值,则他仍然不知道令牌本身。

cookie 虽然将包含原始令牌,浏览器会将其发送到服务器。然后,服务器将再次对此原始令牌进行哈希处理,并将其与数据库中的哈希进行比较。

如果您只知道哈希,并且无法使用它检索原始令牌,则无法准备 cookie,因为它需要原始令牌。像SHA512这样的加密哈希算法不允许"解码"哈希。