java服务端中客服端抓包与构建地址访问问题
来源:互联网 发布:微商小视频制作软件 编辑:程序博客网 时间:2024/04/29 17:03
在编写客服端时,为实现用户会话跟踪常常使用session和 cookie 相结合的方法
首先服务其生成session 和身份凭证token
HttpSession session= request.getSession();
String token=UUID.randomUUID().toString().toUpperCase();
session.setAttribute("token", token);
向客服端写入cookie
Cookie tokenCokie=new Cookie("token",token);
tokenCokie.setMaxAge(1000);
String Membertag="memberId";
Cookie memberCookie=new Cookie("Membertag",Membertag);
memberCookie.setMaxAge(1000);
response.addCookie(tokenCokie);
response.addCookie(memberCookie);
服务端验证与会话跟踪
String cMembertag=null;
String cToken=null;
Cookie[] cookies= request.getCookies();
if(cookies!=null){
for(Cookie cookie:cookies){
if(cookie.getName().equals("cookie")){
cToken=cookie.getValue();
}else if(cookie.getName().equals("Membertag")){
cMembertag=cookie.getValue();;
}
}
}
HttpSession Session = request.getSession(true);
if(cToken.equals(session.getAttribute("token"))){
//验证通过
}else{
//验证不通过
}
这样便实现的客服端的回话跟踪的实现
但是存在安全风险,
在客服端登入后由于token是不变的故可以使用Fidder等工具构建请求,重而实现不用使用客服端也可访问服务。
为解决这样的问题,可以通过构建动态tonken实现具体如下
首先服务其生成session 和身份凭证token不变
HttpSession session= request.getSession();
String token=UUID.randomUUID().toString().toUpperCase();
session.setAttribute("token", token);
向客服端写入cookie
获取系统时间戳
String time= String.valueOf(System.currentTimeMillis());
设置客服端tokenCokie为token+";"+time
token=token+";"+time
//对token进行加密自密钥为123456 之后将结果设置给客户端的cokie
token=Decoder(token,"123456")
Cookie tokenCokie=new Cookie("token",token);
tokenCokie.setMaxAge(1000);
String Membertag="memberId";
Cookie memberCookie=new Cookie("Membertag",Membertag);
memberCookie.setMaxAge(1000);
response.addCookie(tokenCokie);
response.addCookie(memberCookie);
客户端对收到的结果进行的 tokenCokie进行解密将的得到时间戳和token
并将 token+";"+客服端时间戳 的结果进过加密后设置在cookie 作为下一次访问使用
String cMembertag=null;
String cToken=null;
Cookie[] cookies= request.getCookies();
if(cookies!=null){
for(Cookie cookie:cookies){
if(cookie.getName().equals("cookie")){
//取出cToken
cToken=cookie.getValue();
//取出cToken中的token cToken的值为(Token+";"+时间戳)
cToken=Token
}else if(cookie.getName().equals("Membertag")){
cMembertag=cookie.getValue();;
}
}
}
HttpSession Session = request.getSession(true);
if(cToken.equals(session.getAttribute("token"))){
//验证通过
。。。。。。
为客服端设置新的cookie 值为 token =ession.getAttribute("token")+";"+时间戳
}else{
//验证不通过
}
首先服务其生成session 和身份凭证token
HttpSession session= request.getSession();
String token=UUID.randomUUID().toString().toUpperCase();
session.setAttribute("token", token);
向客服端写入cookie
Cookie tokenCokie=new Cookie("token",token);
tokenCokie.setMaxAge(1000);
String Membertag="memberId";
Cookie memberCookie=new Cookie("Membertag",Membertag);
memberCookie.setMaxAge(1000);
response.addCookie(tokenCokie);
response.addCookie(memberCookie);
服务端验证与会话跟踪
String cMembertag=null;
String cToken=null;
Cookie[] cookies= request.getCookies();
if(cookies!=null){
for(Cookie cookie:cookies){
if(cookie.getName().equals("cookie")){
cToken=cookie.getValue();
}else if(cookie.getName().equals("Membertag")){
cMembertag=cookie.getValue();;
}
}
}
HttpSession Session = request.getSession(true);
if(cToken.equals(session.getAttribute("token"))){
//验证通过
}else{
//验证不通过
}
这样便实现的客服端的回话跟踪的实现
但是存在安全风险,
在客服端登入后由于token是不变的故可以使用Fidder等工具构建请求,重而实现不用使用客服端也可访问服务。
为解决这样的问题,可以通过构建动态tonken实现具体如下
首先服务其生成session 和身份凭证token不变
HttpSession session= request.getSession();
String token=UUID.randomUUID().toString().toUpperCase();
session.setAttribute("token", token);
向客服端写入cookie
获取系统时间戳
String time= String.valueOf(System.currentTimeMillis());
设置客服端tokenCokie为token+";"+time
token=token+";"+time
//对token进行加密自密钥为123456 之后将结果设置给客户端的cokie
token=Decoder(token,"123456")
Cookie tokenCokie=new Cookie("token",token);
tokenCokie.setMaxAge(1000);
String Membertag="memberId";
Cookie memberCookie=new Cookie("Membertag",Membertag);
memberCookie.setMaxAge(1000);
response.addCookie(tokenCokie);
response.addCookie(memberCookie);
客户端对收到的结果进行的 tokenCokie进行解密将的得到时间戳和token
并将 token+";"+客服端时间戳 的结果进过加密后设置在cookie 作为下一次访问使用
String cMembertag=null;
String cToken=null;
Cookie[] cookies= request.getCookies();
if(cookies!=null){
for(Cookie cookie:cookies){
if(cookie.getName().equals("cookie")){
//取出cToken
cToken=cookie.getValue();
//取出cToken中的token cToken的值为(Token+";"+时间戳)
cToken=Token
}else if(cookie.getName().equals("Membertag")){
cMembertag=cookie.getValue();;
}
}
}
HttpSession Session = request.getSession(true);
if(cToken.equals(session.getAttribute("token"))){
//验证通过
。。。。。。
为客服端设置新的cookie 值为 token =ession.getAttribute("token")+";"+时间戳
}else{
//验证不通过
}
0 0
- java服务端中客服端抓包与构建地址访问问题
- 关于FTP客服端与服务端连接的时候,连接方式主动与被动的问题
- Java获取访问服务端的客户端IP和MAC地址
- java学习之服务端和客服端
- Servlet中获取客服端Ip地址
- Servlet中获取客服端Ip地址
- Servlet中获取客服端Ip地址
- django模板中访问地址问题
- Java中解决访问地址中包含空格和中文路径的问题
- Java如何访问Axis2服务端
- Spring MVC Restful构建中静态资源访问问题
- 服务端与客户端交互中产生的问题
- JSP中forward与sendRedirect在服务端路径问题
- java-websocket 服务端 开发中遇到的问题
- 服务端和android客服端回滚
- Android 与服务端交汇,本地搭建服务端ip地址设置
- Dede中配置uc模块提示"uc服务端地址无效"的问题。
- Java中使用socket实现客户端与服务端交互
- 支持将opencv的Mat图像采用x264等编码器编码的类
- [分治 || 单调栈 单调队列] 51Nod 1215 数组的宽度
- 利用位与运算简化代码
- java Queue中 remove/poll, add/offer, element/peek区别
- Linux 多线程编程
- java服务端中客服端抓包与构建地址访问问题
- 一种注入到unity游戏进程获取FPS的方法
- zookeeper集群的搭建
- android运行异常transformClassesWithDexForDebug
- IOS APP SCHEME
- html Nofollow属性值
- Mac下如何查看Git的全局忽略列表
- 八、JDK的命令行工具
- ViewPager 显示Fragment 对Fragment 设置显示的监听onHiddenChanged不起作用