首页 文章

加密cookie中的会话ID(或其他身份验证值)是否有用?

提问于
浏览
8

在Web开发中,当启用会话状态时,会话ID存储在cookie中(在cookieless模式下,将使用查询字符串) . 在asp.net中,会话ID自动加密 . 互联网上有很多关于如何加密cookie的主题,包括会话ID . 我可以理解为什么要加密私人信息(如DOB),但任何私人信息都不应该存储在cookie中 . 因此,对于其他cookie值,例如会话ID,目的加密是什么?它会增加安全性吗?无论你如何保护它,它都会被送回服务器进行解密 .

更具体,

出于认证目的,

  • 关闭会话,我不想再处理会话超时了

  • 在cookie中存储某种id值,

  • 在服务器端,检查id值是否存在并匹配,如果是,则验证用户 .

  • 让浏览器会话结束时cookie值过期,这样 .

VS

Asp.net表单身份验证机制(我认为它依赖于会话或会话ID)

后者提供更好的安全性吗?

5 回答

  • 2

    对Session Hijacking等会话的攻击旨在获得有效的会话ID . 如果您现在要加密会话ID,攻击者只会瞄准加密的会话ID,您将没有任何优势 . 因此,加密会话ID是没用的 . 请记住,会话ID只是一个用于标识会话的随机值 . 攻击者不需要知道该随机值是否具有某些特定含义;他们只需要知道随机值 .

    如果要保护会话安全,请使用HTTPS通过SSL加密整个HTTP通信,并仅使用标志设置cookie

    • 安全只允许通过HTTPS发送cookie

    • HttpOnly禁止通过JavaScript进行本地访问 .

  • 1

    我认为"you should always encrypt your data"指的是使用正确签名的证书在您的连接中使用SSL . 这将加密客户端和服务器之间的整个通信 .

    我没有看到任何其他用途,否则另外加密会话ID(首先已经是一个非常随机生成的ID) .

  • 4

    这在OWASP site中有记载

    通过 system.web/httpCookies 元素中的 web.config

    <httpCookies httpOnlyCookies="true" …>
    

    或以编程方式

    C# Code:
    HttpCookie myCookie = new HttpCookie("myCookie");
    myCookie.HttpOnly = true;
    Response.AppendCookie(myCookie);
    
  • 23

    通过SSL(HTTPS)发送的数据是完全加密的,包括标头(因此是cookie),只有您发送请求的主机未加密 . 它还意味着GET请求已加密(URL的其余部分) . 虽然攻击者可以强制客户端通过HTTP进行响应,但强烈建议您在cookie中使用“安全”标志,强制使用HTTPS发送cookie .

    Secure属性没有关联的值 . 而是,属性名称的存在表明指定了安全行为 . Secure属性旨在将cookie通信限制为加密传输,指导浏览器仅通过安全/加密连接使用cookie . 当然,Web服务器应该通过安全/加密连接设置安全cookie,以免以首次发送到Web浏览器时允许窃听的方式传输cookie信息 .

  • -3

    加密随机的东西会让你无处可寻......

相关问题