在Web开发中,当启用会话状态时,会话ID存储在cookie中(在cookieless模式下,将使用查询字符串) . 在asp.net中,会话ID自动加密 . 互联网上有很多关于如何加密cookie的主题,包括会话ID . 我可以理解为什么要加密私人信息(如DOB),但任何私人信息都不应该存储在cookie中 . 因此,对于其他cookie值,例如会话ID,目的加密是什么?它会增加安全性吗?无论你如何保护它,它都会被送回服务器进行解密 .
更具体,
出于认证目的,
-
关闭会话,我不想再处理会话超时了
-
在cookie中存储某种id值,
-
在服务器端,检查id值是否存在并匹配,如果是,则验证用户 .
-
让浏览器会话结束时cookie值过期,这样 .
VS
Asp.net表单身份验证机制(我认为它依赖于会话或会话ID)
后者提供更好的安全性吗?
5 回答
对Session Hijacking等会话的攻击旨在获得有效的会话ID . 如果您现在要加密会话ID,攻击者只会瞄准加密的会话ID,您将没有任何优势 . 因此,加密会话ID是没用的 . 请记住,会话ID只是一个用于标识会话的随机值 . 攻击者不需要知道该随机值是否具有某些特定含义;他们只需要知道随机值 .
如果要保护会话安全,请使用HTTPS通过SSL加密整个HTTP通信,并仅使用标志设置cookie
安全只允许通过HTTPS发送cookie
HttpOnly禁止通过JavaScript进行本地访问 .
我认为"you should always encrypt your data"指的是使用正确签名的证书在您的连接中使用SSL . 这将加密客户端和服务器之间的整个通信 .
我没有看到任何其他用途,否则另外加密会话ID(首先已经是一个非常随机生成的ID) .
这在OWASP site中有记载
通过
system.web/httpCookies
元素中的web.config
或以编程方式
通过SSL(HTTPS)发送的数据是完全加密的,包括标头(因此是cookie),只有您发送请求的主机未加密 . 它还意味着GET请求已加密(URL的其余部分) . 虽然攻击者可以强制客户端通过HTTP进行响应,但强烈建议您在cookie中使用“安全”标志,强制使用HTTPS发送cookie .
Secure属性没有关联的值 . 而是,属性名称的存在表明指定了安全行为 . Secure属性旨在将cookie通信限制为加密传输,指导浏览器仅通过安全/加密连接使用cookie . 当然,Web服务器应该通过安全/加密连接设置安全cookie,以免以首次发送到Web浏览器时允许窃听的方式传输cookie信息 .
加密随机的东西会让你无处可寻......