一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种邮件内容安全发送的方法、装置、设备及可读介质与流程

2022-06-01 02:59:32 来源:中国专利 TAG:


1.本发明涉及互联网安全技术领域,尤其涉及一种邮件内容安全发送的方法、装置、设备及可读介质。


背景技术:

2.随着互联网的发展,网络安全问题也越来越严重。入侵与反入侵、网络攻击与防御措施愈演愈烈,互联网的安全时刻经受着考验。信息安全包含计算机安全与网络安全,而网络安全又包含很多方面。在软件行业快速发展的今天,应用的架构会越来越趋于简单化,架构越来越倾向于分布式水平扩展,对外的服务提供也会越来越saas(software as a service,软件即服务)化。
3.在这种大背景下,目前所有的系统架构都是采用前后端分离的系统架构,那么就不可能避免的需要服务对外提供api(application programming interface,应用程序编程接口)。邮件发送作为常用的功能,邮件发送请求api是基于http(hyper text transfer protocol,超文本传输协议)的,具有跟标准的web应用一样的容易受攻击的倾向,恶意人通过抓包的方式获取到邮件请求的参数,通过修改相关的参数,促改邮件内容,肆意发送给其他人,达到欺骗服务器的目的,还能通过发送邮件功能进行重放造成邮件轰炸漏洞,这些并没有预定义的安全方法,必须依靠开发人员定义自己的安全方法来维护资源调用。因此,需要一种防篡改防重放的实现方法保证邮件发送请求的安全。


技术实现要素:

4.有鉴于此,本发明实施例的目的在于提出一种邮件内容安全发送的方法、装置、设备及可读介质,采用时间戳、用户唯一标识、请求参数等以md5算法进行加密签名来防止攻击者利用网络监听或者其他方式篡改发送邮件请求参数以及进行邮件请求重放攻击,能够轻易内嵌到整个系统内部,使防篡改防重放攻击系统透明化、简单化,整个系统仅需要付出少量代价就可以实现邮箱发送请求防篡改防重放攻击的安全性需求。
5.基于上述目的,本发明实施例的一方面提供了一种邮件内容安全发送的方法,包括以下步骤:响应于服务端接收到客户端发送的包含若干请求参数和基于预设签名规则对所述若干请求参数签名得到的数字签名的post请求,则基于所述预设签名规则对所述若干请求参数进行签名以得到校验数字签名,并判断所述校验数字签名与所述post请求中的数字签名是否一致;若是所述校验数字签名与所述post请求中的数字签名一致,则获取所述post请求中的时间戳,并基于当前时间和所述时间戳判断所述post请求是否超时;若是所述post请求未超时,则通过缓存机制判断所述数字签名是否保存在缓存中;以及若是所述数字签名未保存在缓存中,则将所述数字签名保存在所述缓存中,设置失效时间以在所述失效时间后将所述数字签名从所述缓存中删除,并向所述客户端返回邮件发送成功的消息。
6.在一些实施方式中,方法还包括:若是所述校验数字签名与所述post请求中的数
字签名不一致,则确认所述请求参数被篡改,向所述客户端返回邮件发送失败的消息。
7.在一些实施方式中,方法还包括:若是所述post请求超时,则确认所述post请求为重放请求,向所述客户端返回邮件发送失败的消息。
8.在一些实施方式中,方法还包括:若是所述数字签名保存在缓存中,则确认所述post请求为重放请求,向所述客户端返回邮件发送失败的消息。
9.在一些实施方式中,在客户端执行以下步骤:基于预设签名规则对若干请求参数进行签名,以得到数字签名;将所述数字签名放在请求头中,将所述若干请求参数放在请求体中,并将由所述请求头和所述请求体组成的post请求发送给服务端。
10.在一些实施方式中,方法还包括:所述请求参数包括时间戳、用户唯一标识、发送人和邮件内容;所述预设签名规则为md5加密算法。
11.在一些实施方式中,基于当前时间和所述时间戳判断所述post请求是否超时包括:计算当前时间和所述时间戳的时间差,并判断所述时间差是否超过预设有效时间,若是所述时间差超过预设有效时间,则认为所述post请求超时;设置失效时间以在所述失效时间后将所述数字签名从所述缓存中删除包括:设置失效时间与所述预设有效时间相等,以在所述失效时间后就将所述数字签名从所述缓存中删除。
12.本发明实施例的另一方面,还提供了一种邮件内容安全发送的装置,包括:第一模块,配置用于响应于服务端接收到客户端发送的包含若干请求参数和基于预设签名规则对所述若干请求参数签名得到的数字签名的post请求,则基于所述预设签名规则对所述若干请求参数进行签名以得到校验数字签名,并判断所述校验数字签名与所述post请求中的数字签名是否一致;第二模块,配置用于若是所述校验数字签名与所述post请求中的数字签名一致,则获取所述post请求中的时间戳,并基于当前时间和所述时间戳判断所述post请求是否超时;第三模块,配置用于若是所述post请求未超时,则通过缓存机制判断所述数字签名是否保存在缓存中;以及第四模块,配置用于若是所述数字签名未保存在缓存中,则将所述数字签名保存在所述缓存中,设置失效时间以在所述失效时间后将所述数字签名从所述缓存中删除,并向所述客户端返回邮件发送成功的消息。
13.本发明实施例的再一方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,存储器存储有可在处理器上运行的计算机指令,指令由处理器执行时实现上述方法的步骤。
14.本发明实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。
15.本发明至少具有以下有益技术效果:本发明主要采用时间戳、用户唯一标识、请求参数等以md5算法进行加密签名来防止攻击者利用网络监听或者其他方式篡改发送邮件请求参数以及进行邮件请求重放攻击,能够轻易内嵌到整个系统内部,使防篡改防重放攻击系统透明化、简单化,整个系统仅需要付出少量代价就可以实现邮箱发送请求防篡改防重放攻击的安全性需求。在http环境下,解决了邮件发送post请求调用过程中,攻击者恶意篡改请求参数以及利用监听盗取的邮件请求进行重放攻击的问题。有效防止邮件篡改任意发送内容、任意发送任何人,篡改邮件内容为钓鱼链接或危险网站以及邮件轰炸漏洞。
附图说明
16.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
17.图1为本发明提供的邮件内容安全发送的方法的实施例的示意图;
18.图2为本发明提供的邮件内容安全发送的装置的实施例的示意图;
19.图3为本发明提供的计算机设备的实施例的示意图;
20.图4为本发明提供的计算机可读存储介质的实施例的示意图。
具体实施方式
21.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
22.需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
23.基于上述目的,本发明实施例的第一个方面,提出了邮件内容安全发送的方法的实施例。图1示出的是本发明提供的邮件内容安全发送的方法的实施例的示意图。如图1所示,本发明实施例的邮件内容安全发送的方法包括如下步骤:
24.001、响应于服务端接收到客户端发送的包含若干请求参数和基于预设签名规则对若干请求参数签名得到的数字签名的post请求,则基于预设签名规则对若干请求参数进行签名以得到校验数字签名,并判断校验数字签名与post请求中的数字签名是否一致;
25.002、若是校验数字签名与post请求中的数字签名一致,则获取post请求中的时间戳,并基于当前时间和时间戳判断post请求是否超时;
26.003、若是post请求未超时,则通过缓存机制判断数字签名是否保存在缓存中;以及
27.004、若是数字签名未保存在缓存中,则将数字签名保存在缓存中,设置失效时间以在失效时间后将数字签名从缓存中删除,并向客户端返回邮件发送成功的消息。
28.在本实施例中,http是一种无状态的协议,发送邮件功能,服务端并不知道客户端发送的请求是否合法,也并不知道请求中的参数是否正确。本发明提供了一种防止邮件发送防篡改攻击重放的实现方法,能够保护邮件内容遭受恶意篡改攻击以及对发送邮件请求进行重放造成邮件轰炸漏洞。主要采用时间戳、用户唯一标识、请求参数等以md5算法进行加密签名来防止攻击者利用网络监听或者其他方式篡改邮件请求参数以及进行邮件请求重放攻击。具体包括如下步骤:
29.步骤1:浏览器客户端发送邮件请求post到服务端,请求头包括时间戳timestamp、用户唯一标识uid、签名sign,请求体body参数包括邮件内容相关参数。
30.步骤2:服务端使用相同的规则对请求头参数及body请求参数进行签名,比对签名sign是否一致,验证sign是否合理,防止邮件请求参数被篡改,如果一致,则进入步骤3,如若不一致,则参数被篡改,邮件发送失败。
31.步骤3:服务端对请求头参数时间戳进行判断,判断是否超时,若超时,说明是重放攻击,发送邮件失败,如若否,则进入在步骤4。
32.步骤4:服务端对签名进行判断,使用缓存机制,在有效时间内,签名是否已经存在缓存中,防止重放请求,如果存在,那么这个请求就被判定属于重放请求,发送邮件失败,如若不存在,则发送成功。
33.其中,步骤1中构造签名字符串,被签名字符串包括请求头以及请求参数用&符进行分割,所有请求参数按照字典顺序进行排序,包括系统参数和自定义参数,sign是对uid,timestamp,messageto(发送人),messagebody(邮件内容)构造字符串(mb=messagebody&mt=messageto&ts=timestamp&t=uid)。并用md5算法对上述构造签名串进行签名,并把结果base64放在请求头里,请求头参数sign。
34.其中,步骤2中服务端对请求头中的时间戳timestamp、用户uid,以及body参数中的messageto(发送人),messagebody(邮件内容)参数按照客户端相同的规则构造签名字符串,对其进行md5加密,生成服务端签名sign。
35.其中,步骤3中时间戳判断是否超时以1min为准,超过1min,则超时。http请求从发出到达服务器一般都不会超过60s,所以服务器收到http请求之后,首先判断时间戳参数与当前时间相比较,是否超过了60s,如果超过了则认为是非法的请求。一般情况下,从抓包重放请求耗时远远超过了60s,所以此时请求中的timestamp参数已经失效了。
36.其中,步骤4中有效时间内,是指1min内。服务端缓存机制使用redis,去缓存中查找是否有key为sign:{sign}的string。如果不存在,则创建这个key,保存到缓存中,记录这个请求,把这个key失效的时间和验证timestamp失效的时间一致,比如是60s。通过timestamp,超出60s,缓存删除,避免缓存参数“集合”越来越大的问题。如果存在,说明这个key在60s内已经被使用了,那么这个请求就可以判断为重放请求,邮件发送失败。
37.在本发明的一些实施例中,方法还包括:若是校验数字签名与post请求中的数字签名不一致,则确认请求参数被篡改,向客户端返回邮件发送失败的消息。
38.在本发明的一些实施例中,方法还包括:若是post请求超时,则确认post请求为重放请求,向客户端返回邮件发送失败的消息。
39.在本发明的一些实施例中,方法还包括:若是数字签名保存在缓存中,则确认post请求为重放请求,向客户端返回邮件发送失败的消息。
40.在本发明的一些实施例中,在客户端执行以下步骤:基于预设签名规则对若干请求参数进行签名,以得到数字签名;将数字签名放在请求头中,将若干请求参数放在请求体中,并将由请求头和请求体组成的post请求发送给服务端。
41.在本发明的一些实施例中,方法还包括:请求参数包括时间戳、用户唯一标识、发送人和邮件内容;预设签名规则为md5加密算法。
42.在本发明的一些实施例中,基于当前时间和时间戳判断post请求是否超时包括:计算当前时间和时间戳的时间差,并判断时间差是否超过预设有效时间,若是时间差超过预设有效时间,则认为post请求超时;设置失效时间以在失效时间后将数字签名从缓存中删除包括:设置失效时间与预设有效时间相等,以在失效时间后就将数字签名从缓存中删除。
43.需要特别指出的是,上述邮件内容安全发送的方法的各个实施例中的各个步骤均
可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于邮件内容安全发送的方法也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在实施例之上。
44.基于上述目的,本发明实施例的第二个方面,提出了一种邮件内容安全发送的装置。图2示出的是本发明提供的邮件内容安全发送的装置的实施例的示意图。如图2所示,本发明实施例的邮件内容安全发送的装置包括如下模块:第一模块011,配置用于响应于服务端接收到客户端发送的包含若干请求参数和基于预设签名规则对若干请求参数签名得到的数字签名的post请求,则基于预设签名规则对若干请求参数进行签名以得到校验数字签名,并判断校验数字签名与post请求中的数字签名是否一致;第二模块012,配置用于若是校验数字签名与post请求中的数字签名一致,则获取post请求中的时间戳,并基于当前时间和时间戳判断post请求是否超时;第三模块013,配置用于若是post请求未超时,则通过缓存机制判断数字签名是否保存在缓存中;以及第四模块014,配置用于若是数字签名未保存在缓存中,则将数字签名保存在缓存中,设置失效时间以在失效时间后将数字签名从缓存中删除,并向客户端返回邮件发送成功的消息。
45.基于上述目的,本发明实施例的第三个方面,提出了一种计算机设备。图3示出的是本发明提供的计算机设备的实施例的示意图。如图3所示,本发明实施例的计算机设备包括如下装置:至少一个处理器021;以及存储器022,存储器022存储有可在处理器上运行的计算机指令023,指令由处理器执行时实现以上方法的步骤。
46.本发明还提供了一种计算机可读存储介质。图4示出的是本发明提供的计算机可读存储介质的实施例的示意图。如图4所示,计算机可读存储介质031存储有被处理器执行时执行如上方法的计算机程序032。
47.最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,邮件内容安全发送的方法的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(rom)或随机存储记忆体(ram)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
48.此外,根据本发明实施例公开的方法还可以被实现为由处理器执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被处理器执行时,执行本发明实施例公开的方法中限定的上述功能。
49.此外,上述方法步骤以及系统单元也可以利用控制器以及用于存储使得控制器实现上述步骤或单元功能的计算机程序的计算机可读存储介质实现。
50.本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
51.在一个或多个示例性设计中,功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则可以将功能作为一个或多个指令或代码存储在计算机可读介质上或
通过计算机可读介质来传送。计算机可读介质包括计算机存储介质和通信介质,该通信介质包括有助于将计算机程序从一个位置传送到另一个位置的任何介质。存储介质可以是能够被通用或专用计算机访问的任何可用介质。作为例子而非限制性的,该计算机可读介质可以包括ram、rom、eeprom、cd-rom或其它光盘存储设备、磁盘存储设备或其它磁性存储设备,或者是可以用于携带或存储形式为指令或数据结构的所需程序代码并且能够被通用或专用计算机或者通用或专用处理器访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴线缆、光纤线缆、双绞线、数字用户线路(d0l)或诸如红外线、无线电和微波的无线技术来从网站、服务器或其它远程源发送软件,则上述同轴线缆、光纤线缆、双绞线、d0l或诸如红外线、无线电和微波的无线技术均包括在介质的定义。如这里所使用的,磁盘和光盘包括压缩盘(cd)、激光盘、光盘、数字多功能盘(dvd)、软盘、蓝光盘,其中磁盘通常磁性地再现数据,而光盘利用激光光学地再现数据。上述内容的组合也应当包括在计算机可读介质的范围内。
52.以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
53.应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
54.上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
55.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
56.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献