http是一种无状态协议;
我们先探讨用户登陆的整个过程:
1、网页显示登陆页面,用户输入用户名和密码等信息,这时候安全点的做法是浏览器先把密码信息做不对称加密处理,然后传输到服务器;
2、服务器收到加密后的用户名密码信息后进行校验,通过后会启动新session,并且把sessionID通过设置cookies方式传输到浏览器;
3、用户在登陆情况下进行浏览网页,每一个请求都会把sessionID通过cookies方式传输给服务器;
4、服务器通过cookies获取到sessionID后,根据sessionID判断是否是同一个用户的请求,然后根据session信息判断是否登陆,是否有权限做某些操作;
5、用户关闭浏览器时,浏览器会把保存sessionID的cookies删除,服务器端在session信息超时时会把服务端session删除。
也就是说保存sessionID的cookies标志了是否是同一个用户的操作,而服务器并没有对这个sessionID进行校验,如果该sessionID被非法截取或者修改,合法用户信息可能被非法使用。比如有两个用户,sessionID分别为A和B,黑客在发送http请求时设置sessionID为A则可以冒充A用户进行相应操作,而把sessionID从A改为B就可以模拟用户B行为。
所以服务器需要校验session是否被修改和是否被盗用