zoukankan      html  css  js  c++  java
  • 浅谈 session 会话的原理

    先谈 cookie

      网络传输基于的Http协议,是无状态的协议,即每次连接断开后再去连接,服务器是无法判断此次连接的客户端是谁。

      如果每次数据传输都需要进行连接和断开,那造成的开销是很巨大的。

      为了解决这个问题,cookie就应运而生,当用户登陆成功,服务器会在返回响应数据的同时也携带着cookie给到客户端,

      之后客户端每次发起请求只要携带着这个cookie,那就免去登录的步骤。cookie是保存在客户端的数据。

      这确实极大改善了网络传输的效率。当时由于cookie是保存在浏览器客户端的,所以也很容易被提取,这在安全方面存在隐患。

    再谈session

    session的实现需要依赖于cookie,其本质也是通过以cookie的方式向客户端发送随机字符串,每次客户端发起请求时只要携带

    该随机字符串便可很容易进行验证。下面大概写下整个session过程的原理。

    1. 用户发出登录请求
    2. 判断账户密码是否正确
    3. 如正确,则返回数据并在cookie中写随机字符串(sessionID),并且在服务端以{随机字符串:{'k':'v'}}的形式存储用户相关数据
    4. 下次同个客户发送请求,携带cookie(包含sessionID)
    5. 服务端会判断cookie是否包含sessionID,如有再去服务器内存中查询该sessionID 是否有对应的数据,如果有,则说明是登录过的用户,返回数据。

       session是保存在服务端的数据。

      由此可见,session是不会向客户端发送敏感信息的,随机字符串即使被人窃取,也无法简单在客户端被恶意行为伪造请求。

  • 相关阅读:
    SpringBoot的@Import和@ImportResource
    SpringBoot引入其他配置文件
    SpringBoot加载application.properties配置文件的顺序
    Interceptor(拦截器)
    Filter(过滤器)
    ES6数组知识点,巧妙运用数组,对循环说88
    javase基础socket编程之局域网聊天,局域网文件共享
    【金三银四】缓存面试题-web层缓存
    MD5和SHA-1加密算法被我国密码学家王小云破解
    java中的ArrayList 的C语言实现版本。
  • 原文地址:https://www.cnblogs.com/xiaohuyi/p/10284867.html
Copyright © 2011-2022 走看看