0

好的,我看到了这个例子,就像 cookie 被加密了一样。

var app = express()
app.set('trust proxy', 1) // trust first proxy
app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true }
}))

这是我的问题,假设 A 和 B 坐在一起,B 复制 A 的请求,其中包括会话信息(加密的 cookie)并放入他的请求。是的,B 无法解密 cookie,但那又如何呢?从服务器端,它检查会话信息,它对 A 和 B 使用相同的秘密。所以请求通过了。

那么从安全的角度来看,这个会话如何比 cookie 更有用呢?

4

1 回答 1

2

express-session:我不明白为什么它可以是安全的

如果您使用 https 运行并且您的物理计算机对外界是安全的,那么您的快速会话 cookie 在本地存储时受到保护,在传输到服务器时受到保护(通过 https)。

因此,只要会话 cookie 受到保护,不会被盗,那么只有拥有该会话 cookie 的计算机才能访问存储在服务器上的快速会话数据。

常规 cookie 也是如此(他们也需要 https 来保证安全),但与会话 cookie 的区别在于它不包含任何实际数据。它仅包含一个加密的 ID,服务器使用该 ID 来识别与该用户对应的会话对象。然后,会话数据仅在服务器本身上可用,这进一步使其免受某些类型的攻击。

这是我的问题,假设 A 和 B 坐在一起,B 复制 A 的请求,其中包括会话信息(加密的 cookie)并放入他的请求。

如果 B 可以看到 A 的 cookie,因为 A 没有使用 https 并且 B 可以访问 A 的网络,那么没有什么是安全的。您需要对普通 cookie 或会话 cookie 使用 https 以获得任何体面的安全级别。事实上,如果 B 可以看到网络上的整个交易,即使 A 登录也可能是不安全的。

那么从安全的角度来看,这个会话如何比 cookie 更有用呢?

如果您通过 http 运行它们,它们也不安全。如果您在 https 上运行它们,两者都是安全的。但是,会话具有将实际会话状态存储在普通 cookie 中的各种功能,例如跨多个设备维护会话的能力(当会话存储被持久化并重新附加到来自任何设备的用户的任何登录时) ),提供更大和更丰富状态的会话存储(超出普通 cookie 所能存储的方式)等...服务器端会话更灵活、更强大——这也是它们受欢迎的原因之一。

于 2021-06-20T05:42:47.343 回答