session-id是放在cookies中还是放在header中更安全

问题:session-id是放在cookies中还是放在header中更安全?在安全性能方面比较,那种方式更好

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/176016
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:cookie、session和sessionId
  • 除此之外, 这篇博客: Session的介绍与使用(顺带cookie和sessionId)中的 什么是Cookie? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •  存在浏览器端的一个小型文本文件(用来存相关数据的)

  • 您还可以看一下 范宗敬老师的Cookie与Session的常用操作及其工作原理课程中的 cookie禁用后如何实现session二小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    为了更好地保证安全性和性能,建议将session ID放在HTTP cookie中。以下是具体原因和步骤:

    1. HTTP cookie是一种浏览器与Web服务器进行交互的标准技术。它可以将一些数据存储在用户浏览器中,这些数据会在Web服务器的响应中发送给浏览器,并在后续的请求中自动发送到Web服务器。由于HTTP cookie只存储在浏览器中,因此它可以提供一定的安全性保障,不能够被其他网站或者第三方插件所访问。

    2. 如果将session ID放在HTTP头中,虽然也可以在客户端和服务器之间传递数据,但是它可能容易被拦截或者截获,并被恶意用户用来攻击应用程序。为此,HTTP头通常只用于发送一些元数据信息,而不是用于存储数据。

    3. 如果使用HTTP cookie来存储session ID,可以通过以下步骤来实现:

    a. 在服务器端生成一个唯一的session ID,并将其存储在一个HTTP cookie中。

    b. 通过某种机制将该session ID与当前用户的参数或者请求相关的数据进行关联,并将其存储在服务器端进行后续的验证。

    c. 每当客户端向服务器发出请求时,Web服务器会从HTTP cookie中提取session ID,然后使用该session ID在服务器端检索相关的数据。

    1. 以下是一个示例代码,演示了如何在Spring Boot应用程序中使用HTTP cookie来存储session ID:

    a. 在请求验证码时,将生成的session ID存储在一个HTTP cookie中,并将其返回到浏览器中:

      ```
      response.addCookie(new Cookie(Constants.KAPTCHA_SESSION_KEY, request.getSession().getId()));
      ```
    

    b. 在登录时,从HTTP cookie中提取session ID,并将其用于在服务器端检索相关的数据:

      ```
      String sessionCode = "";
      Cookie[] cookies = request.getCookies();
      if (cookies != null) {
          for (Cookie cookie : cookies) {
              if (Constants.KAPTCHA_SESSION_KEY.equals(cookie.getName())) {
                  sessionCode = cookie.getValue();
                  break;
              }
          }
      }
      ```
    

    c. 使用获取到的session ID在服务器端检索相关的数据:

      ```
      User user = (User) request.getSession().getAttribute("user");
      ```
    

    通过将session ID存储在HTTP cookie中,可以提高应用程序的安全性和性能。具体来说,在保证用户隐私和数据安全的同时,可以减少与Web服务器的通信次数,从而提升应用程序的性能。

就安全而言,个人感觉没有区别。