Cookie自动登录小记
通过cookie自动登录就是将用户名,密码保存在cookie中,然后下次获取cookie中的用户名,密码实现自动登录,这也是为什么盗取他人的cookie可以登录你注册的网站原因。(没有那些验证码)
servlet中代码:
将用户名,密码保存在cookie中,然后下次取出来
String username = request.getParameter("username");
String password = request.getParameter("password");
Cookie[] cs = request.getCookies();
Cookie cookie = new Cookie("username", username);
Cookie cookie02 = new Cookie("password",password);
response.addCookie(cookie);
response.addCookie(cookie02);
这样无论下次就可以取出去来直接用作登录,一般会MD5啊什么加密的,没有我这种直接用,这只是为了简化实现自动登录。
jsp中测试代码:这里只是为了简化实现可视化效果
<%
String userName = "null";
String password = "null";
Cookie[] cs = request.getCookies();
if(cs!=null&&cs.length>0){
for(Cookie c:cs){
if(c.getName().equals("username")) userName = c.getValue();
if(c.getName().equals("password")) password = c.getValue();
}
}
%>
function init(){
var userName = "<%=userName%>";
var password = "<%=password%>";
console.info(userName+" "+password);
}
刷新页面
第一次输出的是 Null null
第二次输出的就是: King 123456 这个用户名,密码了,因为页面在加载时下面这里被替换成cookie中用户名,密码
String userName = "null";
String password = "null";
if(c.getName().equals("username")) userName = c.getValue(); if(c.getName().equals("password")) password = c.getValue();
因为第一次没有执行servlet中代码设置cookie,等点击登录按钮获取到username和password才设置cookie,所以第二次jsp中代码才可以从cookie中获取到username和password
修改cookie,这里用的是chrome浏览器
(注意先要清空以前设置的cookie,这样实验才可以进行。)
1.刷新查看控制台输出为空
2. 设置cookie,这里设置的用户名密码为 king001 123 和页面输入的不一样
在console中使用document.cookie可以查看cookie ,document.cookie="XXX" 可以设置cookie (仅在chrome中用过,其他浏览器不知道支不支持)
4.查看控制台输出,变成了自己设置的用户名密码,不是登录时输入的了
2.手动修改cookie中username,password king001,123
3. 由于cookie有生命周期,还没有消散,所以保存在cookie中的用户名就变成了手动设置的用户名,密码
4. 页面获取cookie中用户名,密码,就输出上图样子
一般(指那些校验不强的网站)在登录一个网站发送到后台前拦截住请求然后修改其中cookie就可以用他人的用户名,密码自动登录。