实现客户端和服务器双向的防重放攻击
来源:互联网 发布:linux虚拟机不能用优盘 编辑:程序博客网 时间:2024/06/10 04:15
实现客户端和服务器双向的防重放攻击
最近按客户的需求,需要在实现服务器防重放的前提下实现客户端的防重放机制,解决当恶意截获服务器返回数据,重复提交给客户端来反复重走交易流程,造成不安全的隐患。
所谓重放攻击,百度解释:重放攻击(Replay Attacks)又称重播攻击、回放攻击或新鲜性攻击(Freshness Attacks),是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。
现阶段我所知道的防重放有以下几种实现方式:
1. 时间戳
2. 序号
3. 挑战方式,及提问和应答
我采用了比较容易,而且容错性高的序列号方式来实现双向的防重放。具体的实现逻辑如下:
1、实现1个单例的会话管理类 SessionManager,保存一个组号和序列号,组号一般在多个会话中使用,用来记录当前会话编号,序列号记录当前组号下发送请求的编号。初始值都为0。
2、每当客户端向服务器发送请求时,客户端需要从单例中取出当前的组号、序列号,拼接在请求之前,发送给服务器,保存请求时的组号序列号,并且SessionManager组号的序列号+1;
3、服务器接收到请求,解析报文,获取组号和序列号,并且保存到本地,当接收到下次来的客户端请求时,服务器把请求中的组号序列号解析出来和本地保存的做比较,如果小于或者等于保存的序列号,那么此次的客户端请求可能为重放攻击。大于则为正常请求。
4、服务器每次接受到请求时,只会处理非重放攻击的请求,并且把客户端请求中的组号序列号拼接到响应中,一起返回给客户端。
5、客户端再接收到服务器响应后,解析报文,获取组号序列号,和请求时拼接的组号序列号对比,如果不相同,则视为重放攻击,相同时为正常响应。
- 实现客户端和服务器双向的防重放攻击
- 客户端防重放设计
- Token实现防重放
- HTTPS入门及如何防重放攻击
- 初级web api的设计(二)——防重放攻击
- 基于timestamp和nonce的防止重放攻击方案
- 重放攻击的概念简介
- 关于重放攻击的知识点
- 重放攻击
- 重放攻击
- 重放攻击
- 重放攻击
- 重放攻击
- 重放攻击
- 重放攻击
- Comet通讯:Bayeux协议(ajax实现客户端和服务器的双向交互)
- 说说API的防重放机制
- 老生常谈重放攻击的概念(必看篇)
- 课程安排
- 线段树模板
- 关于margin-top失效的解决办法
- Hibernate中常见问题 No row with the given identifier exists问题的原因及解决
- Java Web 跨平台 - 使用Apache Axis2引擎发布基于Java语言的WebService并跨平台调用实例
- 实现客户端和服务器双向的防重放攻击
- 使用讯飞语音实现语音识别,朗读文字
- 原型模式
- android studio2.0解决办法 Plugin is too old, please update to a more recent version
- MFC控件 text编辑
- 简单配置bind9 的master 和slave
- c语言中return,和exit的区别
- 数据结构--队列-泛型OC&C++混编-泛型编程
- UML类图关系