CN117318932A - 一种基于Nginx插件的API防篡改与防重放的系统和方法 - Google Patents

一种基于Nginx插件的API防篡改与防重放的系统和方法 Download PDF

Info

Publication number
CN117318932A
CN117318932A CN202311268800.7A CN202311268800A CN117318932A CN 117318932 A CN117318932 A CN 117318932A CN 202311268800 A CN202311268800 A CN 202311268800A CN 117318932 A CN117318932 A CN 117318932A
Authority
CN
China
Prior art keywords
key
request message
dynamic
nginx
gateway
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311268800.7A
Other languages
English (en)
Inventor
连正
宫宸
陈银桃
章维
郭正飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongkong Technology Co ltd
Original Assignee
Zhongkong Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhongkong Technology Co ltd filed Critical Zhongkong Technology Co ltd
Priority to CN202311268800.7A priority Critical patent/CN117318932A/zh
Publication of CN117318932A publication Critical patent/CN117318932A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Abstract

本发明公开了一种基于Nginx插件的API防篡改与防重放的系统和方法,其中,方法具体包括:网关接收并转发网络请求端的访问请求至服务器端,并接收服务器端响应于访问请求的返回响应包;网关插入调用钩子函数的劫持代码至返回响应包,并将劫持后的返回响应包返回至网络请求端;网络请求端基于接收的返回响应包执行劫持代码从而为API接口注册钩子函数;若网络请求端发送请求报文调用API接口,则基于钩子函数的动态基础密钥加密得到动态密钥,以及基于动态密钥修改请求报文。网关基于接收的请求报文解析得到动态密钥,并使用对称密钥进行解密;检验请求报文重放和篡改,并将校验通过后的请求报文转发至服务器端;保证密钥不会被泄露,有效防御漏洞利用攻击。

Description

一种基于Nginx插件的API防篡改与防重放的系统和方法
技术领域
本发明涉及一种网络安全技术领域,具体涉及一种基于Nginx插件的API防篡改与防重放的系统和方法。
背景技术
现有的用于网络安全的安全方案或者产品采用的加签认证的方式,很容易在前端暴露密钥,同时还存在以下问题。
1、目前大部分的通用漏洞披露CVE、国家信息安全漏洞共享平台CNVD的web漏洞利用都是通过poc脚本检测漏洞以及exploit脚本进行漏洞利用的,大部分的都需要借助脚本和工具发送请求,因此采用脚本和工具大大增加了漏洞攻击风险;
2、只能防御攻击者在内网或者广域网上进行的抓包重放;
3、很多单独针对某网站的爬虫都是通过python、golang或者java语言编写定制的,不具备浏览器的js解析能力以及hook接口能力,所以无法生成签名,因此无法抵御机器人行为;
4、密钥固定的,只要攻击者知道签名的算法,就可以伪造签名,绕过检测,无法防御攻击者在内网或者广域网上进行的抓包重放。
5、部署在广域网的web应用通过IP和端口暴露接口,攻击者可以分析参数,注入恶意代码。
中国发明专利申请号为202211464423.X,提出的《一种API接口加密签名方法》技术方案,采用MD5的方式对HTTP数据内容签名,具体的方案是对HTTP请求内容的所有参数深拷贝后,重新排列,最后使用MD5加密生成sign发送,然后由后端验证。采用MD5的方案,让攻击者完全有能力通过脚本伪造签名绕过认证,让防篡改功能失效。攻击者得知签名方案后,可以先修改参数值,然后通过脚本使用一样算法计算出修改参数后的md5值,因此,无法防止API数据篡改,也无法保证加签密钥安全性。
如果采用具体的密钥加密算法代替md5的话,又会面临一个新的问题,因为web应用服务的对象是公网上的所有用户,包括正常用户和攻击者。给用户颁发的密钥key也是对全网公布的,这意味着攻击者知道了算法,也可以使用该key加密参数从而绕过签名的认证,无法做到真正的安全。
发明内容
本发明为了克服以上技术的不足,提供了一种基于Nginx插件的API防篡改与防重放的系统和方法,采用Nginx插件实现反向代理安全网关的形式,通过JS劫持方案让浏览器具备加签认证的能力,采用JS代码混淆和动态密钥,保证密钥不会被泄露,并可有效防御防止了加密的内容会在一定时间内被破解的风险,并且可以针对大多数的网站实现即插即用。
本发明克服其技术问题所采用的技术方案是:本申请第一个方面提出了一种基于Nginx插件的API防篡改与防重放的系统,包括网络请求端、服务器端和网关Nginx的网络系统,设置于网络请求端和服务器端之间的网关Nginx至少包括反向代理模块,其特征在于,所述网关Nginx还配置劫持模块、校验模块、解密模块、密钥生成模块和钩子函数模块,所述反向代理模块用于作为安全网关将网络请求中的网络地址反向代理到服务器端的Web服务,并接收Web服务的响应包;所述劫持模块用于劫持Web服务的响应包,将劫持代码插入至响应包,从而调用钩子函数模块得到动态密钥;所述解密模块用于解密网络请求包的动态密钥并判断请求包是否收到攻击;所述校验模块用于校验请求包是否重放或篡改;所述密钥生成模块用于定时生产随机密钥并保存,以及将随机密钥写入钩子函数模块。
进一步的,所述钩子函数模块至少包括代码混淆单元和加密单元;所述代码混淆单元用于基于接收的随机密钥代码混淆为动态基础密钥;所述加密单元用于将请求报文的参数和动态基础密钥加密,并基于动态基础密钥修改请求报文,并发送请求报文至网关Nginx。
本申请第二个方面提出了一种基于Nginx插件的API防篡改与防重放的方法,应用于上述基于Nginx插件的API防篡改与防重放的系统,包括以下步骤:网关Nginx接收并转发网络请求端的访问请求至服务器端,并接收服务器端响应于访问请求的返回响应包;网关Nginx插入调用钩子函数的劫持代码至返回响应包,并将劫持后的返回响应包返回至网络请求端;网络请求端基于接收的返回响应包执行劫持代码从而为API接口注册钩子函数;若网络请求端发送请求报文调用API接口,则基于钩子函数的动态基础密钥加密得到动态密钥,以及基于动态密钥修改请求报文。网关Nginx基于接收的请求报文解析得到动态密钥,并使用对称密钥进行解密;网关Nginx检验请求报文重放和篡改,并将校验通过后的请求报文转发至服务器端。
进一步的,所述动态基础密钥为随机时间随机生成的随机密钥与原始钩子函数经过代码混淆生成的密钥。
进一步的,所述基于钩子函数的动态基础密钥加密得到动态密钥,具体包括:基于钩子函数提取请求报文中的参数至参数数组;转换参数数组的内容为字节并进行排列,并基于检验算法计算参数数组的第一检验值;基于钩子函数的动态基础密钥加密基于第一检验值拼接钩子函数生成的时间戳,从而得到动态密钥。
进一步的,所述基于动态密钥修改请求包,具体包括:将动态密钥通过headers的方式附加到请求报文,从而得到修改后的请求报文。
进一步的,所述网关Nginx基于接收的请求报文解析得到动态密钥,具体包括:网关Nginx基于接收的请求报文的headers解析得到动态密钥,若接收的请求报文没有headers字段或无法解析得到动态密钥,则判断请求报文受到攻击则拦截。
进一步的,校验请求报文重放具体包括:钩子函数生成的时间戳与系统的时间戳进行比对,若两个时间戳的时间差超过预设时间阈值,则确定请求报文发生重放攻击,否则确定请求报文未发生重放攻击并进行篡改校验。
进一步的,校验请求报文篡改具体包括:基于钩子函数提取请求报文中的参数至参数数组,转换参数数组的内容为字节并进行排列,并基于检验算法参数计算参数数组的第二校验值,比较第二校验值和第一校验值,如果不相等,则认为请求报文收到了攻击并拦截。
进一步的,还包括动态基础密钥更新,具体包括:网关Nginx配置定时脚本随机生成基础密钥,并将基础密钥保存至网关Nginx的配置文件中,同时将基础密钥写入钩子函数中;钩子函数将代码混淆为动态基础密钥;重启网关Nginx从而基于动态基础密钥更新对称密钥。
本发明的有益效果是:
1、引入Nginx与Nginx插件作为网关的技术,利用Nginx自身反向代理、修改响应包劫持网页、http检测流程插件实现防篡改防重放。
2、采用js代码混淆和动态密钥的技术,帮助浏览器每次加密数据时,保证密钥不会被泄露,攻击者不会根据算法和密钥构造出签名的值,从而绕过检测;
3、保证了正常流量只能由浏览器发出的,因此阻止了几乎所有的工具和脚本,从而可以有效防御漏洞利用攻击;
4、有效防止由各种语言编写的爬虫工具,保障了web服务器的安全性;
5、既可以保护单独部署的web应用,也可以利用Nginx的LB能力部署在web服务器集群上,作为WAF或者流量代理网关。
6、防止中间人截获数据包重放,而且其包含对API参数值的加签认证方案能防止黑客通过正向代理截获原始数据包并改包重放的场景,可以杜绝绝大部分的web服务漏洞利用。
7、基于Nginx反向代理功能,将流量转发到后端受保护的服务器,配合Nginx自带的负载均衡功能,且防重放防篡改的安全能力以Nginx插件的形式实现,使得该安全能力以Nginx为载体形成一种安全消息网关,适用于各种场景的web服务包括传统web服务器集群场景、云原生微服务场景等。
附图说明
图1为本发明实施例的一种基于Nginx插件的API防篡改与防重放的系统示意图。
图2为本发明实施例网关Nginx的架构示意图;
图3为本发明实施例的一种基于Nginx插件的API防篡改与防重放的方法流程图;
图4为本发明实施例的一种基于Nginx插件的API防篡改与防重放的方法的应用示例。
具体实施方式
为了进一步理解本发明,首先对本发明提到的部分术语进行解释:
Nginx:高性能http和反向代理的轻量型服务器,占用内存少,并发能力强,强可扩展性,可以动态加载自定义的插件。
WAF:WEB应用型防火墙(web application firewall),通过执行一系列针对http和https的安全策略来专门为Web应用提供防护。
API:应用程序编程接口,是一些预先定义的函数,给用户或开发者提供访问应用程序的能力,本申请中特指REST API,是基于http/https协议的接口。
LB:负载均衡(load balance),建立在网络结构上,能够将流量均匀分摊到多个操作单元执行,如web服务、ftp服务。
AES:高级加密标准,是一种区块加密标准,采用对称密钥。
JS hijack:JavaScript劫持技术,通过将一段JS代码插入到网页中实现相应的功能。
JS混淆:是一种对JavaScript代码的保护技术,通过加密方式,使代码不可读,从人的角度来说无法理解混淆后的代码,但浏览器仍可正常执行。
钩子函数:就是处理拦截在软件组件之间传递的函数调用或事件或消息的代码,本质上就是用以处理系统消息的程序,通过系统调用,把它挂入系统中。
重放攻击:Replay Attacks,又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。重放攻击可以由发起者,也可以由拦截并重发该数据的敌方进行。攻击者利用网络监听或者其他方式盗取认证凭据,之后再把它重新发给认证服务器。重放攻击在任何网络通信过程中都可能发生,是黑客常用的攻击方式之一。
为了便于本领域人员更好的理解本发明,下面结合附图和具体实施例对本发明做进一步详细说明,下述仅是示例性的不限定本发明的保护范围。
如图1所示,为本发明实施例所述的基于Nginx插件的API防篡改与防重放的系统框图,包括网络请求端、服务器端和网关Nginx的网络系统,其中,网关Nginx包括反向代理模块、劫持模块、校验模块、解密模块、密钥生成模块和钩子函数模块。其中,网关Nginx的原理框图如图2所示。图2中所示的客户端即为网络请求端。
在本发明的一个实施例中,网络请求段通过网络发送报文至网关Nginx,网关Nginx的反向代理模块根据URL以及LB反向代理到指定的后端web服务,具体的反向代理模块用于作为安全网关将网络请求中的网络地址反向代理到后端的Web服务,并接收Web服务的响应包;劫持模块用于劫持Web服务的响应包,将劫持代码插入至响应包,从而调用钩子函数模块得到动态密钥;解密模块用于解密网络请求包的动态密钥并判断请求包是否收到攻击。校验模块用于校验请求包是否重放或篡改,密钥生成模块用于定时生产随机密钥并保存,以及将随机密钥写入钩子函数模块。
通过对Nginx的反向代理能力和加载自定义插件的功能构建一个消息安全网关,通过JS劫持让浏览器能够对由浏览器自身发送的各种请求进行签名,并且由网关Nginx进行签名。保证了正常流量只能由浏览器发出的,阻止了几乎所有的工具和脚本。通用性好,既可以保护单独部署的web应用,也可以利用Nginx的LB能力部署在web服务器集群上,作为WAF或者流量代理网关。
钩子函数模块包括代码混淆单元和加密单元,其中,代码混淆单元用于基于接收的随机密钥代码混淆为动态基础密钥,具体可采用JS混淆方式。加密单元用于将请求报文的参数和动态基础密钥加密,并基于动态基础密钥修改请求报文,并发送请求报文至网关Nginx。
本发明的另一个实施例,基于上述的系统的基于Nginx插件的API防篡改与防重放的方法流程图如图3所示,以图4所示的具体实例,对本发明的基于Nginx插件的API防篡改与防重放的方法进行分步骤说明如下。
S1,网关Nginx接收并转发网络请求端的访问请求至服务器端,并接收服务器端响应于访问请求的返回响应包。
在本发明的一个实施例中,网络请求端包括图4中所示的用户以及浏览器,用户在浏览器中输入网址http://www.a.com/index.html访问这个网址的首页。浏览器根据用户的输入www.a.com发送GET/index.html...的http报文至网关Nginx。网关Nginx配置的反向代理模块根据URL以及LB反向代理到指定的后端web服务即网站。网站收到了网关Nginx的反向代理模块转发的请求,则返回html格式的响应给网关Nginx。
S2,网关Nginx插入调用钩子函数的劫持代码至返回响应包,并将劫持后的返回响应包返回至网络请求端。
网关Nginx首先判断收到的返回响应包的格式,如果格式满足条件,则向响应包中插入劫持代码。
在本发明的一个实施例中,首先判断返回响应包的格式是否为html格式,如果为html格式,则进行JS劫持,向返回响应包的首部或者尾部插入js代码。
在本发明的一个实施例中,js代码里包含<script src=http://www.a.com/hook.js>这个关键语句。并将劫持后的html格式的返回响应包返回至浏览器。
S3,网络请求端基于接收的返回响应包执行劫持代码从而为API接口注册钩子函数。
浏览器收到被劫持后的返回响应包,主动去解析html页面里隐藏的js代码,从而主动访问http://www.a.com/hook.js,请求获取hook.js文件。通过网关Nginx配置里的路由策略,则网关Nginx读取hook.js文件里的内容返回给浏览器。浏览器解析hook.js的内容,给API接口注册hook钩子函数。
在本发明的一个实施例中,hook.js是保存在nginx服务器上文件,并且经过JS混淆,因此人是无法读懂解析其中的代码逻辑,浏览器可以解析执行。
S4,若网络请求端发送请求报文调用API接口,则基于钩子函数的动态基础密钥加密得到动态密钥,以及基于动态密钥修改请求报文。
在本发明的一个实施例中,用户想要调用API接口,在页面的登录框中输入用户名和密码,点击提交按钮提交。浏览器接受用户的行为,调用hook钩子函数先提取请求报文中的参数。参数至少包括uri、get参数和post参数,并将这些参数提取至数组。钩子函数将数组中的内容转换为bytes的形式,并且排列起来,并采用md5计算出检验值sign的值。钩子函数将检验值sign拼接hook.js后生成的时间戳timestamp,用js里定义的动态基础密钥进行AES加密得到动态密钥。其中动态密钥的公式如以下所示,code=AES_CRC(md5(uri+get_params+post_params)+timestamp)。
钩子函数将动态密钥通过headers的方式附加到请求报文的原始请求头上,并将修改后的请求报文发送至网关Nginx。
S5,网关Nginx基于接收的请求报文解析得到动态密钥,并使用对称密钥进行解密。
网关Nginx首先判断是否有headers字段,如果没有就认为是攻击则拦截,如果有headers字段,则从headers字段中解析得到动态密钥,并采用保存在网关Nginx的对称密钥进行解密。从而得到检验值sign和时间戳timestamp。如果无法解密,则认为请求报文是攻击则拦截。
S6,网关Nginx检验请求报文重放和篡改,并将校验通过后的请求报文转发至服务器端。
通过解密得到的时间戳和系统的时间戳进行比对,判断是否重发。
在一些实施方式中,两个时间戳的时间差值超过30s,则认为受到了重放攻击,则进行拦截。
重放校验通过的请求报文再进行篡改的校验,采用MD5计算请求报文的校验值sign2,如果本次计算得到的校验值sign2与sign的值进行比对,如果不相等,则认为收到了攻击并拦截。
通过上述方式,可完全检测出攻击者修改数据包的情况。如果重放校验和篡改校验均校验通过,则网关Nginx将请求报文转发到后端的web服务器。
S7,动态基础密钥更新。
网关Nginx配置定时脚本随机生成基础密钥,并将基础密钥保存至网关Nginx的配置文件中,同时将基础密钥写入保存在服务器端的钩子函数中;钩子函数将代码混淆为动态基础密钥;重启网关Nginx从而基于动态基础密钥更新对称密钥。
在本发明的一个实施例中,在完成步骤S1-S6的一周时间之后,到北京时间凌晨3点,网关里的定时脚本重新生成随机的AES基础密钥并保存到Nginx的配置文件中。同时脚本将AES基础密钥写入保存在Nginx网关的钩子函数模块的hook.js文件中,钩子函数模块在进行JS混淆生成新的hook.js文件。则此时的hook.js与步骤S1-S6中应用的hook.js文件有较大区别。再次破解也需要花费很长的时间。最后重启Nginx让新的密钥在后端校验中生效,这样完成了一次动态的密钥替换,保证签名的安全性。使用JS代码混淆的方案从而隐藏加密的算法以及key的值,密钥动态的变化防止了加密的内容会在一定时间内被破解的风险,也就防止了攻击者基于算法和密钥构造签名绕过网关的防护。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

Claims (10)

1.一种基于Nginx插件的API防篡改与防重放的系统,至少包括网络请求端、服务器端和网关Nginx的网络系统,设置于网络请求端和服务器端之间的网关Nginx至少包括反向代理模块,其特征在于,所述网关Nginx还配置劫持模块、校验模块、解密模块、密钥生成模块和钩子函数模块,
所述反向代理模块用于作为安全网关将网络请求中的网络地址反向代理到服务器端的Web服务,并接收Web服务的响应包;
所述劫持模块用于劫持Web服务的响应包,将劫持代码插入至响应包,从而调用钩子函数模块得到动态密钥;
所述解密模块用于解密网络请求包的动态密钥并判断请求包是否收到攻击;
所述校验模块用于校验请求包是否重放或篡改;
所述密钥生成模块用于定时生产随机密钥并保存,以及将随机密钥写入钩子函数模块。
2.根据权利要求1所述的一种基于Nginx插件的API防篡改与防重放的系统,其特征在于,
所述钩子函数模块至少包括代码混淆单元和加密单元;
所述代码混淆单元用于基于接收的随机密钥代码混淆为动态基础密钥;
所述加密单元用于将请求报文的参数和动态基础密钥加密,并基于动态基础密钥修改请求报文,并发送请求报文至网关Nginx。
3.一种基于Nginx插件的API防篡改与防重放的方法,应用于权利要求1-2任一项所述的基于Nginx插件的API防篡改与防重放的系统,其特征在于,包括以下步骤:
网关Nginx接收并转发网络请求端的访问请求至服务器端,并接收服务器端响应于访问请求的返回响应包;
网关Nginx插入调用钩子函数的劫持代码至返回响应包,并将劫持后的返回响应包返回至网络请求端;
网络请求端基于接收的返回响应包执行劫持代码从而为API接口注册钩子函数;
若网络请求端发送请求报文调用API接口,则基于钩子函数的动态基础密钥加密得到动态密钥,以及基于动态密钥修改请求报文。
网关Nginx基于接收的请求报文解析得到动态密钥,并使用对称密钥进行解密;
网关Nginx检验请求报文重放和篡改,并将校验通过后的请求报文转发至服务器端。
4.根据权利要求3所述的一种基于Nginx插件的API防篡改与防重放的方法,其特征在于,所述动态基础密钥为随机时间随机生成的随机密钥与原始钩子函数经过代码混淆生成的密钥。
5.根据权利要求4所述的一种基于Nginx插件的API防篡改与防重放的方法,其特征在于,所述基于钩子函数的动态基础密钥加密得到动态密钥,具体包括:
基于钩子函数提取请求报文中的参数至参数数组;
转换参数数组的内容为字节并进行排列,并基于检验算法计算参数数组的第一检验值;
基于钩子函数的动态基础密钥加密基于第一检验值拼接钩子函数生成的时间戳,从而得到动态密钥。
6.根据权利要求5所述的一种基于Nginx插件的API防篡改与防重放的方法,其特征在于,所述基于动态密钥修改请求包,具体包括:将动态密钥通过headers的方式附加到请求报文,从而得到修改后的请求报文。
7.根据权利要求6所述的一种基于Nginx插件的API防篡改与防重放的方法,其特征在于,所述网关Nginx基于接收的请求报文解析得到动态密钥,具体包括:
网关Nginx基于接收的请求报文的headers解析得到动态密钥,若接收的请求报文没有headers字段或无法解析得到动态密钥,则判断请求报文受到攻击则拦截。
8.根据权利要求5所述的一种基于Nginx插件的API防篡改与防重放的方法,其特征在于,校验请求报文重放具体包括:
钩子函数生成的时间戳与系统的时间戳进行比对,若两个时间戳的时间差超过预设时间阈值,则确定请求报文发生重放攻击,否则确定请求报文未发生重放攻击并进行篡改校验。
9.根据权利要求8所述的一种基于Nginx插件的API防篡改与防重放的方法,其特征在于,校验请求报文篡改具体包括:
基于钩子函数提取请求报文中的参数至参数数组,
转换参数数组的内容为字节并进行排列,并基于检验算法参数计算参数数组的第二校验值,
比较第二校验值和第一校验值,如果不相等,则认为请求报文收到了攻击并拦截。
10.根据权利要求5所述的一种基于Nginx插件的API防篡改与防重放的方法,其特征在于,还包括动态基础密钥更新,具体包括:
网关Nginx配置定时脚本随机生成基础密钥,并将基础密钥保存至网关Nginx的配置文件中,同时将基础密钥写入钩子函数中;
钩子函数将代码混淆为动态基础密钥;
重启网关Nginx从而基于动态基础密钥更新对称密钥。
CN202311268800.7A 2023-09-27 2023-09-27 一种基于Nginx插件的API防篡改与防重放的系统和方法 Pending CN117318932A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311268800.7A CN117318932A (zh) 2023-09-27 2023-09-27 一种基于Nginx插件的API防篡改与防重放的系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311268800.7A CN117318932A (zh) 2023-09-27 2023-09-27 一种基于Nginx插件的API防篡改与防重放的系统和方法

Publications (1)

Publication Number Publication Date
CN117318932A true CN117318932A (zh) 2023-12-29

Family

ID=89287923

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311268800.7A Pending CN117318932A (zh) 2023-09-27 2023-09-27 一种基于Nginx插件的API防篡改与防重放的系统和方法

Country Status (1)

Country Link
CN (1) CN117318932A (zh)

Similar Documents

Publication Publication Date Title
US8302170B2 (en) Method for enhancing network application security
US10069809B2 (en) System and method for secure transmission of web pages using encryption of their content
US8904558B2 (en) Detecting web browser based attacks using browser digest compute tests using digest code provided by a remote source
Sun et al. The devil is in the (implementation) details: an empirical analysis of OAuth SSO systems
US8185942B2 (en) Client-server opaque token passing apparatus and method
US8386784B2 (en) Apparatus and method for securely submitting and processing a request
Sun et al. Systematically breaking and fixing OpenID security: Formal analysis, semi-automated empirical evaluation, and practical countermeasures
Wang et al. A potential HTTP-based application-level attack against Tor
WO2008053279A1 (en) Logging on a user device to a server
CN114745202A (zh) 一种主动防御web攻击的方法及基于主动防御的web安全网关
CN117155716B (zh) 访问校验方法和装置、存储介质及电子设备
Khandelwal et al. Frontline techniques to prevent web application vulnerability
JP4921614B2 (ja) 中間者によるコンピュータのハッキング技法を防止するための方法およびシステム
Aljawarneh Emerging challenges, security issues, and Technologies in Online Banking Systems
Hwang et al. Web session hijacking defense technique using user information
AlZomai et al. Strengthening sms-based authentication through usability
CN117318932A (zh) 一种基于Nginx插件的API防篡改与防重放的系统和方法
Joseph et al. Cookie based protocol to defend malicious browser extensions
US11356415B2 (en) Filter for suspicious network activity attempting to mimic a web browser
US20230224276A1 (en) System and method for securing protected host
Namitha et al. A Survey on Session Management Vulnerabilities in Web Application
CN115987686B (zh) 一种基于https代理的威胁检测方法
Ussath et al. Insights into Encrypted Network Connections: Analyzing Remote Desktop Protocol Traffic
Rautila et al. Secure inspection of web transactions
Uddholm Anonymous Javascript Cryptography and CoverTraffic in Whistleblowing Applications

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination