一种http请求数据防篡改的方法与流程

文档序号:36816423发布日期:2024-01-26 16:22阅读:38来源:国知局
一种http请求数据防篡改的方法与流程

本发明涉及数据防篡改,具体为一种http请求数据防篡改的方法。


背景技术:

1、当今很多物联网平台缺少对公布在网络上的http请求数据的安全性保护,导致不法之徒利用工具拦截并篡改http请求数据,从而获取到重要的用户数据,造成巨大的安全隐患。http是一种明文传输协议,因此在传输过程中容易受到中间人攻击,通过加密通信可以提高http通信的安全性。重放攻击是攻击者多次发送相同请求的行为,通常用于欺骗服务器或干扰系统。防止重放攻击需要采用不同的安全措施,如请求记录、时间窗口、记录保留等。

2、现有技术在处理重放攻击方面存在漏洞,重放攻击是攻击者发送相同请求的行为,会导致数据被多次访问或系统遭受干扰,缺乏有效的防护机制会导致安全风险。某些现有技术可能使用复杂的加密方法,增加了系统的复杂性和性能开销,而没有提供明显的增加安全性的好处。在防护重放攻击方面,现有技术需要记录和管理大量请求数据,这会导致数据存储和维护的复杂性。现有技术缺乏弹性,难以调整安全策略以适应不同的应用场景和需求。


技术实现思路

1、本发明的目的在于提供一种http请求数据防篡改的方法,以解决上述背景技术中提出的问题。

2、为了解决上述技术问题,本发明提供如下技术方案:

3、一种http请求数据防篡改的方法,步骤如下:

4、s100、服务器端解析http请求数据的接口地址,请求头中的sign、token、serialnumber元素,请求体的数据;

5、s200、判断token是否为空,如果为空执行步骤s201,否则执行步骤s202;

6、s201、说明是在非登录情况下调用,则加密数据不包括token;

7、s202、取token中前n位数据,其中n为正整数;

8、s300、判断请求体是否为空,如果为空执行步骤s301,否则执行步骤s302;

9、s301、说明http请求业务逻辑不传输数据,则加密数据不包括请求体数据;

10、s302、取前1024字节数据,不足1024字节的数据取全部;

11、s400、使用不可逆的md5加密算法,结合动态盐,保护http请求数据的完整性和防止篡改;

12、s500、采用动态加密,统计客户端向后台请求数据按照接口地址、请求频次进行分类,根据不同请求频次,分配给对应接口地址不同强度的加密算法;

13、s600、采用不可逆加密算法对加密数据进行加盐计算,得到的结果与sign元素比较;如果一致执行步骤s601,否则执行步骤s602;

14、s601、认为数据是安全、完整并且没有被篡改的;

15、s602、表示数据为不安全的,停止向业务逻辑端执行;

16、s700、针对攻击者的重放攻击,采用过滤方法,记录每次请求的接口地址和请求头中的serialnumber,如果发现有与之重复的请求数据,自动过滤,避免攻击者利用此攻击目标系统。

17、根据步骤s100,接口地址从http请求的url中提取,使用服务器端的http请求处理库或框架访问url信息;请求头中元素sign、token、serialnumber,通过http请求对象的请求头字段访问,使用相应的函数,根据请求头字段的名称获取请求头中元素的值;解析请求体的数据,具体取决于请求的内容类型,使用服务器端框架或库提供的相应函数或方法,从http请求对象中提取请求体数据,如果请求体是json数据,使用json解析器将json数据解析为可处理的数据结构。

18、根据步骤s400,所述动态盐内容为p1+p2,p1取加密数据的前m字节数据,不足m字节的数据取全部,其中m是正整数;p2是请求头serialnumber,serialnumber是雪花算法产生的数字,每次请求都不同。

19、雪花算法是一种分布式唯一id生成算法,用于生成全局唯一的标识符。这些标识符通常在分布式系统中用于唯一地标识对象、实体或数据。雪花算法的设计目的是确保生成的id是全局唯一、有序的,并且可以在分布式系统中高效生成,不需要中心化的协调。

20、使用雪花算法生成serialnumber,serialnumber包含符号位、时间戳、机器id、序列号和随机位;所述符号位占一位,用于表示在正负;所述时间戳占四十一位,记录当前时间的毫秒级别,从一个固定时间epoch开始计算;所述机器id占十位,用于标识不同的机器,每台机器需要分配一个唯一的id,由系统管理员进行分配;所述序列号占十二位,用于解决同一毫秒内产生多个id的冲突问题,如果同一毫秒内产生多个id,序列号会递增,直到毫秒结束;所述随机位占一位,设置0或者1,用于增加id的随机性。

21、根据步骤s500,采用动态加密时,在服务器端,首先需要分析客户端向后台发送的请求的特征,基于请求的特征,将请求按照接口地址、请求频次进行分类;接着,为每个请求类别确定相应的加密策略,选择使用的加密算法、密钥长度、初始化向量;对于高安全性要求的请求,选择更复杂的加密算法,以及更长的密钥;对于低频率的请求,选择轻量级的加密算法,减少计算开销;确定加密策略以后,服务器使用选定的加密算法和密钥对请求数据进行加密,数据在加密后变为不可读;

22、在接收到加密数据后,服务器需要根据请求的特征解密数据,解密过程依赖于之前选择的加密算法和密钥;动态加密包括实时监控机制,以捕获不同请求特征的变化;如果请求的模式或特征发生变化,服务器能够随时调整加密策略;对于秘钥,使用密钥轮换策略定期更改密钥。

23、给对应接口地址分配不同强度的加密算法的方案如下:

24、对于接口地址login且每日请求频次在0到a的,使用加密算法md5,其中a是正整数;对于接口地址qryclient且每日请求频次在a+1到b的,使用加密算法sha256,其中b是正整数;对于接口地址qryuser且每日请求频次大于b的,使用加密算法rsa。

25、md5是一种广泛使用的不可逆散列函数,用于生成固定长度的哈希值,md5基于密码学原理,其工作原理如下:

26、输入数据:md5接收一个输入消息作为输入。

27、数据填充:如果输入的消息不是64字节的整数倍,md5会对消息进行填充以确保其长度是64字节的整数倍。

28、初始值:md5算法使用一组初始常数值作为哈希计算的初始种子。

29、消息分块:md5将填充后的消息分成512位的块,然后对每个块应用一系列的循环运算。

30、循环运算:每个分块通过四轮循环运算,包括位操作、布尔函数、循环迭代和模运算。这些运算使数据逐步转化为128位的哈希值。

31、合并哈希:最后的哈希值是所有块的哈希的累积结果。

32、sha-256是一种密码学安全散列函数,用于生成具有固定长度的哈希值,通常为256位。sha-256是sha-2家族中的一员,是其中最常用的一种。它广泛用于密码学、数字签名、数据完整性验证和加密通信等领域,因为其高度安全性和广泛可用性。

33、sha-256的工作原理如下:

34、输入数据:sha-256接受一个输入消息,可以是任意长度的数据。

35、填充数据:如果输入消息的长度不是512位的整数倍,sha-256会对消息进行填充以确保其长度是512位的整数倍。

36、初始常数:sha-256使用一组初始常数值8个32位字作为哈希计算的初始种子。

37、分块处理:sha-256将填充后的消息分成512位的块,并对每个块应用一系列的循环运算。

38、循环运算:每个块通过64轮的循环运算,包括位操作、布尔函数、位移和模运算。这些运算逐步将数据转化为256位的哈希值。

39、合并哈希:sha-256算法通过合并所有块的哈希值,生成最终的256位哈希值。

40、rsa是一种非对称加密算法,用于加密和解密数据,以及进行数字签名。rsa算法是由美国密码学家ron rivest、adi shamir和leonard adleman于1977年共同发明的,它基于数论的复杂性问题,特别是大素数分解问题。rsa算法在加密通信、数字签名、安全密钥交换和安全认证等领域广泛应用。

41、rsa算法的核心原理基于两个密钥:公钥和私钥。这两个密钥是一对密钥对,用于加密和解密数据以及数字签名。公钥可以被任何人访问,用于加密数据。它包含一个大整数n和一个指数e。私钥是机密的,仅由接收者拥有,用于解密数据。它包含另一个大整数n和一个私有指数d。

42、发送者使用接收者的公钥n和e对要发送的数据进行加密,生成密文。这个过程是不可逆的。接收者使用其私钥n和d对密文进行解密,以还原原始数据。发送者使用其私钥对数据进行数字签名,以证明数据的来源和完整性。接收者可以使用发送者的公钥验证签名的有效性。

43、根据步骤s500,按照接口地址、请求频次进行分类需要确保服务器端记录了客户端请求的日志,所述日志包括接口地址和时间戳,日志类型包括http服务器的访问日志,应用程序日志或自定义的日志;请求日志数据将存储在数据库中;

44、接着使用代码分析所述日志数据,并按照接口地址和请求频次进行分类,将请求日志数据按照接口地址进行分组,通过提取请求中的url路径实现;对每个接口地址进行请求频次统计,通过对时间戳进行聚合操作实现,以小时为单位统计每个接口地址的请求频次。

45、根据步骤s600,选择不可逆加密算法md5,通过加盐增加哈希值的随机性和安全性;加盐数据是一个随机生成的字符串,与要哈希的数据合并;接着将要加密的数据与生成的盐字符串合并,将两者连接在一起,确保数据和盐都以正确的方式编码,以便后续的哈希计算;

46、使用所选择的不可逆加密算法md5,对合并后的数据进行哈希计算,算法会生成一个固定长度的哈希值。

47、根据步骤s700,所述过滤方法如下:当服务器接收到请求时,记录每次请求的关键信息到数据库中,所述关键信息包括接口地址和请求头中的serialnumber;在每次接收到请求之前,服务器检查请求中的接口地址和请求头中的serialnumber是否已被记录,如果这些信息在记录中存在,说明这个请求可能是一个重放攻击;过滤条件设置为:请求与之前记录的请求具有相同的接口地址,请求头中的serialnumber与之前的请求重复,请求时间戳与之前的请求时间戳相似但允许一定的时间差;如果请求被判定为重放攻击,服务器将自动拒绝所述请求,拒绝采取不响应请求或返回错误状态码的操作。

48、在所述过滤方法中,为了避免误判,需要设置一个时间窗口,在所述时间窗口内认为相同的请求不是重放攻击;为了避免记录占用过多的存储空间,需要定期清理过时的请求记录,只保留最近的记录,是否过时取决于时间窗口的设置,超出时间窗口则认为是过时记录;实现监控机制,当检测到若干次重放攻击尝试时,触发告警机制,以通知管理员。

49、与现有技术相比,本发明所达到的有益效果是:

50、通过采用不可逆加密算法和加盐计算,本发明有助于确保传输的数据在传输过程中不被篡改,从而提高数据的完整性和可靠性。

51、根据接口地址和请求频次的不同,本发明使用不同强度的加密算法,使数据在高频请求和低频请求之间具有适当的安全性。

52、通过记录和过滤重复的请求数据,本发明提供了一种方法来抵御重放攻击,从而提高系统的安全性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1