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

一种主动防御web攻击的方法及基于主动防御的web安全网关与流程

2022-07-13 06:33:11 来源:中国专利 TAG:


1.本发明涉及软件安全防护技术领域,尤其涉及一种主动防御web攻击的方法及web安全网关。


背景技术:

2.随着泛在物联网的快速发展,“大云物移智链”信息技术不断深化应用,网络基础环节也随之变化,网络结构复杂化,边界模糊化、威胁形态多样化,给安全防护带来了严峻挑战。随着攻击的针对性、持续性、隐蔽性显著增强,造成的危害更大,增加网络安全防护难度。
3.目前web攻击解决方案存在以下问题:
4.1、开发人员对加固方案的理解和实现不同步,漏洞修复不彻底,引起系统功能和性能问题,比如输出编码方式不正确导致页面回显异常或漏洞仍可复现;
5.2、漏洞修复方案缺乏针对性和全局性。例如,重放攻击、完整性校验等漏洞应对请求进行统一处理,不能针对单个接口处理,单接口方式不仅耗时耗力,导致项目修复周期极长;且代码可复用性差,当系统接口发生变动时需重新改动代码处理。


技术实现要素:

6.本发明实施例提供一种主动防御web攻击的方法及基于主动防御的web安全网关,至少解决提升web安全性的问题。
7.本发明实施例提供了一种防御web攻击的方法,所述方法包括以下步骤:web安全网关在收到业务系统的客户端发往业务系统的服务端的请求后,对所述请求进行基于安全链机制的安全检查;若所述web安全网关对所述请求的安全检查通过,则将所述请求转发给所述业务系统的服务端。
8.优选地,所述对所述请求进行基于安全链机制的安全检查包括针对以下web攻击的处理:sql注入攻击、xss攻击、csrf攻击、明文传输漏洞攻击、重放攻击、完整性漏洞攻击和暴击破解攻击。
9.优选地,针对所述sql注入攻击的处理包括:所述web安全网关获取所述请求中的所有请求参数;所述web安全网关遍历预设关键字集合,在请求参数中查找所述关键字,若找到,则删除所述请求参数中的所述关键字;所述web安全网关遍历预设特殊字符集合,在请求参数中查找所述字符,若找到,则替换或删除所述请求中的所述字符。
10.优选地,针对所述xss攻击的处理包括:所述web安全网关获取所述请求中的所有请求参数;所述web安全网关遍历预设标签集合,在请求参数中查找所述标签的内容,若找到,则对所述请求中的所述标签的内容进行html转义处理;所述web安全网关遍历预设敏感字符集合,在请求参数中查找所述字符,若找到,则替换或删除所述请求中的所述字符。
11.优选地,针对所述csrf攻击的处理包括:所述web安全网关获取所述请求的referer头部信息,并根据所述referer头部信息,确定所述请求的合法性,以禁止非法请
求;所述web安全网关获取所述请求的origin头部信息,并根据所述origin头部信息,确定所述请求是否是跨域访问的请求,以禁止跨域访问的请求。
12.优选地,针对所述明文传输漏洞攻击的处理包括:所述web安全网关预先完成密钥操作交换,以便对所述业务系统的服务端和所述业务系统的客户端之间传输的数据进行加解密处理。
13.优选地,针对所述重放攻击的处理包括:所述web安全网关利用防重放攻击组件,从所述请求的头部中获取时间戳、随机数和防重放签名,其中,所述防重放签名是所述业务系统的客户端根据所述时间戳、所述随机数和预先约定的会话唯一标识生成的;对从所述请求中获取的所述时间戳、所述随机数、所述和防重放签名分别进行验证,以确定所述请求是否是有效请求。
14.优选地,针对所述完整性漏洞攻击的处理包括:所述web安全网关利用完整性校验组件,从所述请求中获取所有参数和客户端完整性签名,其中,所述客户端完整性签名是所述业务系统的客户端根据所述所有参数和预先约定的会话唯一标识生成的;根据从所述请求中获取的所述所有参数和本地保存的预先约定的会话唯一标识,生成服务端完整性签名;根据所述客户端完整性签名和所述服务端完整性签名是否一致,确定所述请求是否是有效请求。
15.优选地,针对所述暴击破解的处理包括:所述web安全网关利用验证码机制,或者利用验证码机制和防错误机制,对所述业务系统的客户端发起的请求进行验证,以确定所述请求是否是有效请求。
16.本发明实施例还提供了一种基于主动防御的web安全网关,其特征在于,所述web安全网关基于安全链机制,当请求到达网关时,根据安全链逐条实现权利要求1-9任一项所述方法的步骤。
17.本发明实施例提供的一种主动防御web攻击的方法及基于主动防御的web安全网关,在收到业务系统的客户端发往业务系统的服务端的请求后,通过对所述请求进行基于安全链机制的安全检查,提升web安全性。
附图说明
18.图1是本发明实施例提供的一种主动防御web攻击的方法的流程示意图;
19.图2是本发明实施例提供的一种主动防御web攻击的部署示意图;
20.图3是本发明实施例提供的秘钥交换和会话唯一标识uid的详细解决方案流程图;
21.图4是本发明实施例提供的防重放攻击方案示意图。
具体实施方式
22.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特有的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
23.实施例一
24.图1是本发明实施例提供的一种主动防御web攻击的方法的流程示意图,如图1所示,所述方法可以包括:
25.步骤s101:web安全网关(以下简称安全网关)在收到业务系统的客户端发往业务系统的服务端的请求后,对所述请求进行基于安全链机制的安全检查;
26.步骤s102:若所述安全网关对所述请求的安全检查通过,则将所述请求转发给所述业务系统的服务端。
27.对所述请求进行基于安全链机制的安全检查包括针对以下web攻击的处理:sql注入攻击、xss攻击、csrf攻击、明文传输漏洞攻击、重放攻击、完整性漏洞攻击和暴击破解攻击。在实际应用中,可以根据需要选取针对不同web攻击的处理以及设定处理顺序。
28.其中,针对所述sql注入攻击的处理包括:所述安全网关获取所述请求中的所有请求参数;所述安全网关遍历预设关键字集合,在请求参数中查找所述关键字,若找到,则删除所述请求中的所述关键字,例如涉及insert、delete、update关键字;所述安全网关遍历预设特殊字符集合,在请求参数中查找所述字符,例如“#”,若找到,则替换或删除所述请求中的所述字符。
29.其中,针对所述xss攻击的处理包括:所述安全网关获取所述请求中的所有请求参数;所述安全网关遍历预设标签集合,在请求参数中查找所述标签的内容,若找到,则对所述请求中的所述标签的内容进行html转义处理,转义处理为已有技术,在此不再赘述,所述安全网关遍历预设敏感字符集合,在请求参数中查找所述字符,若找到,则替换或删除所述请求中的所述字符。
30.其中,所述请求的头部中的origin和referer可以表示请求链接的来源,referer指示所述请求来自于哪个页面,origin指示所述请求来自于哪个站点。基于此,本实施例的针对所述csrf攻击的处理包括:所述安全网关获取所述请求的referer头部信息,并根据所述referer头部信息,确定所述请求的合法性,以禁止非法的请求;所述安全网关获取所述请求的origin头部信息,并根据所述origin头部信息,确定所述请求是否是跨域访问的请求,以禁止跨域访问的请求。
31.其中,明文即没有加密的文本,由于没有加密,很容易在网络中被截取,安全性差,特别是以明文形式传输用户账号、密码等敏感信息,将大大影响用户信息安全。本实施例采用安全网关解决该问题,针对所述明文传输漏洞攻击的处理可以包括:所述安全网关提供密钥交换功能,以使用交换的密钥对敏感信息进行加密传输,例如,预先交换所述业务系统的服务端的公钥和所述业务系统的客户端的公钥以及对称加密秘钥,以便对所述业务系统的服务端和所述业务系统的客户端需要发送的数据进行加密处理后发送至对方解密,以抵御明文传输漏洞攻击。
32.其中,重放攻击又叫重播攻击,通过将窃听到的历史数据包重新发送给接收方以破坏身份认证的正确性。本实施例采用安全网关识别请求的有效性,以防御重放攻击。针对所述重放攻击的处理可以包括:所述安全网关利用防重放攻击组件,从所述请求的头部中获取时间戳、随机数和防重放签名,所述防重放签名是所述业务系统的客户端根据所述时间戳、所述随机数和预先约定的会话唯一标识生成的;对从所述请求中获取的所述时间戳、所述随机数、所述和防重放签名分别进行验证,以确定所述请求是否是有效请求。具体地说,安全网关计算服务端当前时间与所述时间戳的差值,根据所述差值和预设时间差阈值,确定所述timestamp是否有效,例如,所述差值大于60s或者小于等于0,则验证出所述时间戳无效,说明所述请求无效。在本地查询所述随机数,由于所述随机数是一次性的,如果本
地存在所述随机数,说明所述请求无效。根据所述时间戳、所述随机数及本地保存的uid,生成服务端防重放请求签名,如果所述防重放签名与所述服务端防重放请求签名不一致,说明所述请求无效。
33.其中,判断数据完整性的目的是识别数据受未授权的修改,例如未授权的数据增加和删除等。本实施例采用安全网关判断数据完整性以确定所述请求的有效性。针对完整性漏洞攻击的处理包括:所述安全网关利用完整性校验组件,从所述请求中获取所有参数和客户端完整性签名,所述客户端完整性签名是所述业务系统的客户端根据所述所有参数和预先约定的会话唯一标识生成的;所述安全网关根据从所述请求中获取的所述所有参数和本地保存的预先约定的会话唯一标识,生成服务端完整性签名,然后根据所述客户端完整性签名签名和所述服务端完整性签名是否一致,确定所述请求是否是有效请求,如果客户端完整性签名和服务端完整性签名不一致,说明数据完整性遭到破坏,所述请求无效。
34.其中,暴击破解指利用大量猜测和穷举的方式来尝试获取用户口令的攻击方式,本实施例采用安全网关防御暴力破解,针对所述暴击破解的处理包括:所述安全网关利用验证码机制,对所述业务系统的客户端发起的请求进行验证,以确定所述请求是否是有效请求,其中,提供的验证码可以带有大量干扰元素以对抗自动识别,增加暴力攻击难度。或者,所述安全网关利用验证码机制对所述业务系统的客户端发起的请求进行验证以确定所述请求是否是有效请求,通过防错误机制锁定用户账号,增加暴击攻击难度。
35.本实施例的安全网关在收到业务系统的客户端发往业务系统的服务端的请求后,通过对所述请求进行基于安全链机制的安全检查,提升web安全性。
36.实施例二
37.为有效防止当前流行的web攻击,例如,sql注入攻击、xss攻击、csrf攻击、明文传输漏洞、重放攻击、完整性漏洞攻击以及暴力破解攻击等等,本实施例提供了一种基于主动防御的web安全网关,以下简称安全网关,该安全网关基于安全链机制,当请求到达网关时,根据安全链逐条实现前述方法的步骤,可以实现主动防御web攻击,通过该安全网关的使用,可以有效、大量地识别和阻止web攻击。
38.图2是本发明实施例提供的一种防御web攻击的部署示意图,如图2所示,安全网关部署在业务系统服务端之前,这样来自于业务系统客户端的所有请求将会首先被发送到安全网关,然后在由安全网关中的筛查过滤模块对请求依次进行重放攻击、完整性漏洞攻击、sql注入攻击、xss攻击、csrf攻击、明文传输漏洞、暴力破解攻击的筛查过滤,拒绝客户端的恶意请求,并将筛查通过的请求转发给业务系统服务器,业务系统服务器响应请求,将响应的数据返回给安全网关,最后由安全网关将响应数据返回给客户端。整个过程中,对业务系统客户端和业务系统服务器来说网关是透明的,与两者直接进行交互一样。安全网关中包含请求筛查过滤模块,该模块对接收到的请求进行筛查过滤,拦截非法请求。过滤筛查采用安全链机制,对每一个请求,进行所有的安全检查。下面针对不同的web攻击,来说明安全网关的安全链处理过程。
39.1、sql注入攻击
40.sql(structured query language,结构化查询语言)注入漏洞是因为后台sql语句拼接了用户的输入,而且web应用程序对用户输入数据的合法性没有判断和过滤,前端传入后端的参数是攻击者可控的,攻击者可以通过构造不同的sql语句来实现对数据库的任
意操作,比如增删改查,如果数据库的用户权限足够大,还可以对操作系统执行操作。
41.安全网关的处理过程可以为:客户端发出的请求到达安全网关后,如果是表单格式的请求,则安全网关对表单格式请求中的参数进行逐一的过滤,对于sql的关键字采取删除处理,特殊字符采取替换或删除处理;如果是json格式的请求,安全网关对json格式的请求处理时,不是仅仅把json当做一个字符串做统一处理,而是会解析json数据,将json中的每一个值都进行逐一的过滤,过滤处理规则与对表单格式的请求中的参数的过滤处理规则一致,不再赘述。
42.2、xss攻击
43.xss(cross site scripting)跨站脚本是一种经常出现在web应用程序中的计算机安全漏洞。由于web应用对用户提交请求的参数未做充分的检查过滤,允许用户在提交的数据中加入html、js代码,并未加编码地输出到第三方用户浏览器,恶意攻击者可以利用js、activex、html语言甚至flash应用的漏洞,发送恶意代码给另一个用户。因为浏览器无法识别脚本是否可信,从而跨站漏洞脚本便可以运行并让攻击者获取其他用户信息。
44.安全网关的处理过程可以为:客户端发出的请求到达安全网关后,如果是表单格式的请求,安全网关对表单格式的请求中的参数进行逐一的过滤,对于标签内容采取转义处理,对于危险的标签属性采取删除处理,敏感字符采取替换或删除处理;如果是json格式的请求,安全网关对json格式的请求处理时,不是仅仅把json当做一个字符串做统一处理,而是会解析json数据,将json中的每一个值都进行逐一的过滤,过滤处理规则与对表单格式的请求中的参数的过滤处理规则一致,不再赘述。
45.3、csrf攻击
46.csrf(cross-site request forgery,跨站请求伪造)指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害者不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作,如转账、改密等。
47.安全网关的处理过程可以为:客户端发出的请求到达安全网关后,安全网关验证http referer头部内容,该头部记录了请求的来源地址,通过判断是否是被允许的域名来决定请求的合法性;校验http origin头部,禁止跨域访问。
48.本实施例的方案还包括安全组件客户端(或称客户端安全组件),所述安全组件客户端可以在请求中增加安全参数,这样所述安全网关通过校验安全参数就可以识别并阻止web攻击。以下web攻击和处理过程涉及安全组件客户端及安全参数。
49.4、明文传输漏洞
50.明文传输漏洞指数据传输过程中的账号、密码等敏感信息明文传输。
51.安全网关的处理过程可以为:安全网关提供安全的秘钥交换功能。用户可以使用安全组件客户端提供的加解密算法和通过秘钥交换获得的秘钥对敏感数据进行加解密。
52.秘钥交换和会话唯一标识uid的详细解决方案的流程如图3所示,步骤可以包括:
53.步骤s201:用户首次访问业务系统后,安全组件客户端请求获取公钥和服务器时间;
54.步骤s202:安全网关生成与会话相关的公私钥(会话周期内有效),将服务端公钥publickey_server和服务器时间发送给安全组件客户端;
55.步骤s203:安全组件客户端接收到服务器时间后,计算本地时间和服务器时间的差值,并保存在本地;安全组件客户端生成公私钥对,用服务端公钥publickey_server对客户端公钥publickey_client进行加密encryptpublickey_client=rsa.encrypt(publickey_client,publickey_server),发送加密后的客户端公钥encryptpublickey_client;
56.步骤s204:安全网关接收请求后,使用服务端私钥privatekey_server对encryptpublickey_client解密,获取客户端公钥publickey_client=rsa.decrypt(encryptpublickey_client,privatekey_server);
57.步骤s205:安全网关生成与会话相关的随机字符串uid(会话周期有效),并使用客户端公钥publickey_client对uid进行加密encryptuid=rsa.encrypt(uid,publickey_client),加密后得到的encryptuid发送到安全组件客户端。
58.对称加密秘钥和向量操作与uid一致。
59.步骤s206:安全组件客户端得到响应数据后,用客户端私钥privatekey_client对encryptuid进行解密得到明文uid,uid=rsa.decrypt(encryptuid,privatekey_client),并将uid本地保存后待后续使用。
60.对称加密秘钥和向量操作与uid一致。
61.本实施例中,位于所述业务系统的服务端侧的安全网关和位于所述业务系统的客户端侧的安全组件客户端交换密钥,保证了密钥交换的安全性,这样利用安全交换的秘钥对业务系统的服务端和业务系统的客户端需要发送的明文(例如手机号等敏感数据)进行加密,将加密后得到的密文发送至对方解密,得到明文(例如手机号等敏感数据),本实施例通过加密传输手机号等敏感数据,可以有效抵御明文传输漏洞攻击。
62.5、重放攻击
63.重放攻击(replayattacks)是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的。主机a要给服务器b发送数据请求,重放攻击可由发起者a或攻击者c发起。若由发起者a发起,a会恶意重复发送数据请求;若由攻击者c发起,攻击者可利用网络监听或者其他方式盗取数据请求,再重发该请求给服务器。
64.安全网关的处理过程可以为:安全网关引入了防重放攻击组件,通过采用时间戳 随机数(nonce) 签名验证的方案来识别和阻止重放攻击。如图4所示,业务系统的客户端发起请求时引入的安全组件客户端在所述请求中加上时间戳,该时间戳通过客户端当前时间减去时间差值获取,并生成nonce,同时签名,签名是为了防止会话被劫持,时间戳和nonce参数被篡改。安全网关利用防重放攻击组件,对所述请求中的时间戳、nonce及签名进行验证,均验证通过则确认为有效请求,否则视为无效请求。
65.在计算签名时,需要将秘钥交换完成后得到的会话唯一标识uid作为盐值。uid只会在秘钥交换时传输,在其他请求中不会涉及uid的传输,并且不同会话的uid是不同的。
66.6、完整性漏洞攻击
67.系统在服务器端没有对前端提交的数据做数据完整性的判断,使得在请求发送中被篡改的数据也能正常保存和读取,存在安全隐患。同样,在客户端没有对服务端返回的数据做数据完整性的判断,使得在返回的数据被篡改时,造成客户端越权操作。
68.安全网关的处理过程可以为:安全网关引入了完整性校验组件,通过采用请求参
数签名验证方案来识别和阻止被篡改的请求。客户端发起请求时,利用客户端安全组件对当前请求中的所有参数计算签名。安全网关利用完整性校验组件对签名进行验证,一致则确认为有效请求,否则视为无效请求。
69.在计算签名的时候,需要将秘钥交换完成后,得到的会话唯一标识uid作为盐值。uid只会的秘钥交换时传输,在其他请求中不会涉及uid的传输,并且不同会话的uid是不同的。
70.7、暴力破解攻击
71.爆力攻击是指利用大量猜测和穷举的方式来尝试获取用户口令的攻击方式。
72.安全网关的处理过程可以为:经常使用的防爆破机制是图片验证码机制,所述安全网关可以提供图片验证码功能,生成的图形验证码包含大量的干扰元素,以对抗机器人识别;在此基础上,所述安全网关还添加了防错误机制,超过指定错误登录次数的账号将被锁定,只能等待一段时间或者寻求管理员解锁,才能再次尝试登录。
73.考虑到图片验证码机制增加了用户的额外操作,降低了系统使用体验,安全网关还可以提供了减少验证码输入的防暴力破解机制,例如采用浏览器指纹,动态验证码以及验证码签名的方式,实现与图片验证码一致的效果,从而在保证安全性的前提下,减少用户的操作。
74.具体实施时,业务系统的客户端引入客户端安全组件,业务系统的服务端引入服务端安全组件和安全网关,开启安全配置后,安全网关在收到攻击请求时,会给业务系统的客户端反馈相关错误信息,例如,错误码:474,错误提示:非法请求。在开发过程中使用时,具体包括业务系统的客户端和业务系统的服务端的使用步骤。其中,业务系统的客户端在开发时的使用步骤如下:(1)引入安全组件js包;(2)开启安全配置,具体包括:在客户端的全局配置文件中通过安全配置项来开启不同的安全功能,即可与安全网关对接,具备防web攻击的功能,客户端开启安全配置的文件为:utils/request/settings.js,文件中包含各项安全配置开关,true表示开启配置,false表示关闭配置。业务系统的服务端在开发时的使用步骤如下:(1)集成安全组件,具体包括:引入安全组件jar包;将安全组件加入到扫描路径;将springcontext赋值给securityapi;将安全组件配置文件esapi.properties放到resource目录下;(2)开启会话组件,具体包括:启用安全组件服务端提供的sessiontoolfilter;根据业务微服务选择的是session还是token认证机制,在esapi.properties中配置esapi.sessiontoolhelper所使用的安全组件提供的具体的会话组件帮助类;(3)发布部署安全网关。
75.综上所述,本发明具有以下优点:
76.1、本发明提供了一套系统的安全网关和安全防护组件,提升了web安全性和修复效率;
77.2、本发明的安全网关实现了应用级别过滤和防护,针对特定安全问题开发特定安全组件,各个组件相互独立,不耦合,通过配置文件对安全组件进行配置,可以单独启用或关闭,极大提高了应用网关的灵活性和可拓展性,同时用户感觉不到安全网关的存在,可以使业务系统开发人员保持以往的开发风格;
78.3、本发明可以封装为客户端安全组件和安全网关,具有通用强、兼容性高等特点,让业务系统开发人员聚焦在业务功能的开发,而不是安全问题的修改,减少了代码侵入,减
小了对应用系统的影响,降低了安全开发难度、以及减少了业务开发人员的工作量。
79.以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。本领域技术人员不脱离本发明的范围和实质内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。
再多了解一些

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

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

相关文献