跟踪会话的四种方式:
1、URL重写;
2、隐藏表单域;
3、Cookie;
4、Session;
5、根据Session原理,自定义。
以我的理解:
会话ID,就是用来标识用户的唯一标识,姑且先叫做sessionId。这个sessionId如何创建?可以通过Session对象创建,也可以自定义创建。
1、URL重写,就是将sessionId拼接在请求url中,服务端解析url时获取会话ID;
2、隐藏表单域,则是将sessionId放到form表单中一起提交;
3、Cookie,则是通过cookie保存sessionId;
上述的会话跟踪方式,都会有安全问题。
1、URL重写,很直观地告诉全世界你的sessionId是什么;
2、表单提交,分析js也能很快得到sessionId;
3、cookie方式,也很容易被拦截得到sessionId,甚至F12就能看到。
防御方式:
1、用来保存sessionId的字段名,写隐蔽点。不要见名知意。
2、给Cookie设置httponly,那么js就无法读取cookie,就无法进行xss攻击。
3、设置了httponly也不是绝对安全,可以加多几层防护措施:验证User-Agent头部信息一致性·,或加入Token验证。
总之,会话ID肯定是会泄漏的,主要是看你的产品有没有被攻击的价值。即使是金融相关行业也无法保证会话ID的安全,只能通过行为分析、
监控用户使用习惯等来判断当前用户的操作是否符合用户的历史操作行为。针对敏感操作会有验证码来保证是本人操作(其实是本机操作)。