前言:在web应用中,session是认证用户身份的凭证,它具备以下几个特点:
1.用户不可用任意篡改。
2.A用户的session无法被B用户获取。
也就是说,session的设计目的是为了做用户身份认证。但是很多情况下,session被用作了别的用途,将产生一些安全问题,所以我们来谈谈客户端session(client session)导致的安全问题
说明是客户端session
在传统PHP开发中,$_SESSION
变量的内容默认会被保存在服务端的一个文件中,通过一个叫”PHPSESSID”的cookie来区分用户。这类session是服务端session,用户看到的只是session的名称(一个随机字符串),其内容保存在服务端。
然而,并不是所有的语言都有默认的session存储机制,也不是任何情况下我们都可以向服务器写入文件。所以,很多web框架都会另辟蹊径,比如Django默认将session存储在数据库中,而对于flask这类并不包含数据库操作的框架,就只能将session存储在cookie中。
因为cookie实际上是存储在客户端(浏览器)中的,所以称之为”客户端session”。
保护客户端session
将session存储在客户端cookie中,最重要的就是解决session不能被篡改的问题。
https://www.leavesongs.com/PENETRATION/client-session-security.html