我知道如果将会话保存到cookie中,您需要使用秘密加密它们,否则恶意客户端可能会随意修改其会话。由于许多普遍讨论的原因,这种设计仍然很糟糕。但是,如果在服务器上保存会话(我碰巧通过Rack:Session:Dalli使用Memcache存储),我知道所有客户端获取的都是一个cookie,其中包含一个服务器用于查找其会话的cookie商店。我仍然设置会话秘密。但我不明白它做了什么。通过服务器上的会话存储,会话秘密会做什么?
0
A
回答
1
加密一个大的随机数导致本质上另一个大的随机数。换句话说,如果没有归因于信息的意义(它只是一个随机数),那么对加密没有安全益处。如果您正在存储的ID中嵌入了一些信息,例如某个位集或仅使用了某个ID子集,则加密很有用。
会话ID的长度很重要。显然,ID越长,暴力强度越强。同时用户会话的预期数量也是一个因素,因为会话数量减少了查找有效会话ID所需的强力尝试次数。例如,两个同时会话将ID的有效强度降低一位(128位密钥变得与127位密钥一样有效,只有一个会话)。一个亚马逊规模的网站(比如说)有1,000,000个同时进行的会话会有效地损失20比特的会话密钥强度。
如果您需要抵御暴力攻击,请实施中间件来检查该问题。将信息添加到会话ID中,就像应用程序唯一字符串一样,可以更轻松地检测暴力攻击(并需要会话ID加密)。请注意,这不是而是增强了密钥本身的安全性,并且基本上是浪费精力,除非应用程序在呈现不正确的会话标识时采取某些操作。
无论您做什么,只要确保使用SSL并将cookie设置为仅https。超时会话服务器端,不要依赖cookie过期和客户端浏览器的良好意愿。
TL; DR:如果仅使用cookie进行会话ID存储,如果使用了良好的RNG,则不需要加密。使用SSL并设置Cookie secure attribute。
相关问题
- 1. 为什么会话需要存储在站点服务器上?
- 2. 什么叫会话存储?
- 3. 通过服务器的Rails会话
- 4. 存储Kerberos会话密钥
- 5. 存储会话
- 6. 存储会话
- 7. 云服务器上memcached上的会话存储
- 8. 新会话存储旧会话信息
- 9. 快速会话没有存储会话
- 10. 快速会话没有存储会话
- 11. Django会话存储所有会话
- 12. express:会话存储,查询会话密钥redis
- 13. current_user未存储在生产服务器上的会话
- 14. 单独服务器上的会话存储
- 15. 通过Memcache的Django会话:手动找不到会话密钥
- 16. 服务器之间的会话通信
- 17. 什么加密算法最适合加密服务器上的会话文件?
- 18. 在服务器会话中存储通用Google Analytics(分析)
- 19. TOTP:更改每个会话的秘密
- 20. 会话过期属性不会被触发在服务器上
- 21. ASMX Web服务通过会话
- 22. 通过facebook会话服务(SDK 3.0.1)
- 23. 会话过期后会话ID会发生什么变化?
- 24. 在会话中存储什么?
- 25. 为什么要在服务器上存储会话而不是在cookie中?
- 26. IOS会话存储
- 27. rails3会话存储
- 28. 存储和会话
- 29. 存储在会话
- 30. html5会话存储
好酷我明白。我的会议ID从1增加,所以我需要加密它们,所以他们不能被猜到 –
啊,我认为你使用的是随机会话ID。是的,绝对加密可预测的会话cookie。最好用一个长的机器生成的钥匙。 – Catnapper