01-what's Session
什么是web Session,在web应用中的作用
为什么需要Session
How Session Work in Web Applications and Why We Need It
TODO…
在Web互联网中,成千上万的用户访问同一个网站(interacting with website),在每一个用户的访问中,用户与网站的多次交互中,web程序是如何鉴别和认证是之前同一用户的操作,也就是说,不同用户的访问web应用程序是隔离的,同一用户的多次访问是相关联的。也就是保存了在整个用户与web 应用程序的状态(抽象层面)。
具体对应的技术解决方式是:
The most useful method depends on a token that the Web Server sends to the client browser after a successful client authentication
在用户成功认证后,web应用程序会临时存储一些用户的相关的信息(session is a temporary local storage(bucket) at web server),然后生成一个token_id与该信息关联(作为唯一性),将这个token_id发送用户,当用户再次访问时通过这个token_id来鉴别。所以整个session会话机制,通过是通过session token来管理的。
*: what are sessions?How do they work? BKSpurgeon的比喻很形象: 在伸手不见五指的银行中,等待着众多取钱的用户,那么取钱的时候,客服是如何判定你是取钱的那个人,而不会发生这种你取走别人的钱,或者你的钱被别人取走的糟糕情况。在这个过程,认证变得十分重要。
Session CS视角(point of view)
- HTTP 是一个无状态的协议(stateless protocol),在每一个的访问中,HTTP根本不知道之前发生了什么。
- session是一个抽成层面的会话概念,技术上理解为就是一个存储机制(storage mechanism),这个存储机制的具体实现取决于你自己对web应用的决定,这些临时存储的信息你可以存储在文件系统的text文件中,也可以是数据库中,第三方缓存软件如Redis中,亦或自己定义的HashMap,或者框架如Spring framework自带的Session.
- session是key-value数据结构。可以存储在server,也可以存储在client.在client一般由浏览器(brower)以cookie的形式存储,在server端,就可以有更多的技术来实现session管理,如果有一百万个用户连接到服务器,那么也就会存在与用户各自对应一百万个session id 在server端。
- 在访问私密数据(private data)时需要认证,但是每次认证都需要登录的话就比较annoying烦人,所以session在你第一次登录的时候就记录了认证信息。
- 注意 one connection = one session id,如果一个用户在两个浏览器进行了登录,就会产生两个session id.session id是用来认证连接的,用户的认证逻辑通过应用程序来处理。
关键词
- 认证
- token
- session是缓存(cache)
Session Hijacking attack
既然session会员中,token是唯一的,那么就会产生token被窃取,导致客户端操作的是另外一个用户,而服务器端则认证为是同一个用户操作。
TODO…