一种安全防护方法和装置
技术领域
本发明涉及信息安全领域,尤其涉及一种安全防护方法和装置。
背景技术
现有的web安全防护和拦截主要通过waf或类似waf的检测和拦截技术,其主要通过动态/静态模型、攻击特征等方式进行安全防护;或者根据特点业务逻辑采取针对式的编码防护。
然而,采用waf或类似waf的检测和拦截技术时,难以和业务有效结合,定义业务的逻辑规则;采用针对式的编码防护时,存在防护不全,不方便统一管理的问题。
发明内容
本发明的目的是提供一种安全防护方法和装置,能够在实现统一防护的同时,与业务进行有效结合。
一方面,本发明实施例提供一种安全防护方法,包括:客户端需要发送业务请求时,所述客户端通过预先加载的安全组件获取安全组件签名;所述客户端向预先连接的业务服务端发送业务请求,所述业务请求包括所述安全组件签名;所述业务服务端的预设过滤组件拦截所述业务请求,并调用安全微服务端进行处理;所述安全微服务端根据所述安全组件签名进行合法性判断,并将判断结果返回给所述过滤组件;所述判断结果为合法时,所述过滤组件将所述业务请求路由到所述业务服务端相应的业务API接口进行后续业务处理。
另一方面,本发明实施例提供一种安全防护装置,包括:
客户端,所述客户端预先加载安全组件;所述客户端用于在需要发送业务请求时,通过所述安全组件获取安全组件签名;向预先连接的业务服务端发送业务请求,所述业务请求包括所述安全组件签名;
所述业务服务端预设过滤组件,所述过滤组件与所述客户端和安全微服务端相连,用于拦截所述业务请求,并调用所述安全微服务端进行处理;
所述安全微服务端,与所述客户端相连,用于根据所述安全组件签名进行合法性判断,并将判断结果返回给所述过滤组件;
所述过滤组件,还用于接收所述安全微服务端返回的判断结果;所述判断结果为合法时,将所述业务请求路由到所述业务服务端相应的业务API接口进行后续业务处理。
本发明实施例提供的技术方案,通过客户端预先加载的安全组件提供本地的安全处理逻辑,实现统一防护;同时通过业务服务端的预设过滤组件实现针对性的业务防护。安全组件与过滤组件的加载是基于源码的透明部署,不影响原有业务逻辑,不必增加硬件部署,也不会改变网络结构;过滤组件将业务请求路由到具体的业务API接口,与业务强结合;安全微服务端对业务的不同需求进行统一的安全防护,能快速实现统一的业务接口防篡改/防重放的安全防护效果;而且,安全微服务端容易自定义,扩展性较强。本发明实施例提供的技术方案,能够在实现统一防护的同时与业务进行有效结合,解决了现有技术中采用waf或类似waf的检测和拦截技术时,难以和业务有效结合,定义业务的逻辑规则;采用针对式的编码防护时,存在防护不全,不方便统一管理的问题。
附图说明
图1为本发明实施例一提供的安全防护方法的流程图一;
图2为本发明实施例一提供的安全防护方法的流程图二;
图3为本发明实施例二提供的安全防护装置的结构示意图一;
图4为本发明实施例二提供的安全防护装置的结构示意图二。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,在下面的具体实施方式中,将对本发明作进一步详细的说明。
实施例一
如图1所示,本发明实施例提供一种安全防护方法,包括:
步骤101,客户端需要发送业务请求时,所述客户端通过预先加载的安全组件获取安全组件签名。
在本实施例中,步骤101中客户端预先加载的安全组件用于提供本地的安全处理逻辑,如获取接入密钥、时间偏差、安全组件签名等。通过步骤101获取安全组件签名的过程包括:安全组件获取时间偏差;所述安全组件根据签名本地时间戳和所述时间偏差之和获取签名时间戳;所述签名本地时间戳为所述安全组件获取签名时间戳时的本地时间戳;所述安全组件使用预设加密算法对所述签名时间戳进行加密,得到时间戳加密串;所述加密采用的密钥为针对所述客户端的应用信息生成的固定密钥;所述安全组件采用预设哈希算法(如SHA512)对所述客户端的客户端设备信息、时间戳加密串和签名时间戳进行加密,得到组件密文;所述安全组件根据所述组件密文、所述业务请求对应的业务字符串、签名时间戳、所述安全组件的组件版本号、所述应用信息和客户端设备信息,获取所述安全组件签名。
其中,安全组件获取时间偏差,包括:所述安全组件根据所述客户端的客户端设备标识、组件版本号、应用信息和客户端设备信息生成接入密钥;所述客户端从所述安全组件获取所述接入密钥,并向所述安全微服务端发送携带所述接入密钥的服务时间戳获取请求;所述安全微服务端验证所述接入密钥是否正确;如果正确,所述安全微服务端响应所述服务时间戳获取请求,并将服务时间戳发送至所述客户端;所述服务时间戳为所述安全微服务端接收所述服务时间戳获取请求时的时间戳;所述客户端将所述服务时间戳发送至所述安全组件;所述安全组件根据所述服务时间戳与请求时间戳之差获取所述时间偏差;所述请求时间戳为所述客户端发送所述服务时间戳获取请求时的时间戳。具体的,安全组件根据所述客户端的客户端设备标识、组件版本号、应用信息和客户端设备信息生成接入密钥,包括:安全组件采用预设哈希算法(如SHA256)对所述客户端设备标识进行加密得到客户端设备哈希值后,采用预设对称加密算法对所述客户端设备哈希值进行加密,得到第一密文;安全组件采用预设编码算法(如base64)对第一密文进行编码,得到第二密文;所述安全组件将所述第二密文、组件版本号、应用信息和客户端设备信息进行连接,生成所述接入密钥。其中,对称加密算法可采用任意一种可用的对称加密算法,如AES-256或CCM等;对称加密采用的密钥与所述安全组件版本号有关;安全组件版本相同时,对称加密采用的密钥相同。
安全组件根据所述组件密文、所述业务请求对应的业务字符串、签名时间戳、所述安全组件的组件版本号、应用信息和客户端的客户端设备信息,获取安全组件签名,包括:所述安全组件将所述组件密文按长度等分为第一组件密文和第二组件密文;所述安全组件采用预设哈希算法(如SHA256)对所述第一组件密文、业务字符串和第二组件密文进行加密,得到签名密文;所述安全组件将所述签名密文、签名时间戳、组件版本号、应用信息和客户端设备信息进行连接,得到所述安全组件签名。其中,安全组件对第一组件密文、业务字符串和第二组件密文进行加密时,所使用的业务字符串既可以为业务请求对应的字符串,也可以为对业务请求对应的字符串进行排序后的字符串,在此不作限制。
其中,当用户已经登录时,客户端设备信息包括客户端设备标识和用户会话令牌(userToken);用户未登录时,客户端设备信息仅包括客户端设备标识。
在本实施例中,安全组件签名基于对称加密和哈希函数,能够提高安全组件签名的运算速度,同时也保障了安全性。
步骤102,客户端向预先连接的业务服务端发送业务请求。
在本实施例中,步骤102中业务请求包括通过步骤101获取的安全组件签名。
步骤103,业务服务端的预设过滤组件拦截业务请求,并调用安全微服务端进行处理。
在本实施例中,步骤103中业务服务端的预设过滤组件能够起到拦截器的作用,用于实现针对性的业务防护;安全微服务端是安全策略的执行者,用于统一的执行防篡改/防重放等措施。为了对安全微服务端的安全策略进行统一的配置和维护,还可以设置单独的风险管理模块;该风险管理模块可以包括防篡改策略配置单元、防重放策略配置单元、白名单策略配置单元、API管理单元和风险分析单元中的一种或多种。风险管理模块用于配置策略数据库,以备安全微服务端调取并执行防篡改/防重放等措施,从而实现统一的风险管理。
在本实施例中,步骤103中该过滤组件调用安全微服务端进行处理的过程包括:所述安全微服务端判断所述业务请求的处理时间是否大于预设阈值;如果大于预设阈值,所述过滤组件将所述业务请求路由到所述业务服务端相应的业务API接口进行后续业务处理;否则,执行步骤104。
步骤104,安全微服务端根据安全组件签名进行合法性判断,并将判断结果返回给过滤组件。
在本实施例中,通过步骤104进行合法性判断的方式可以包括:所述安全微服务端根据所述安全组件签名中的签名时间戳进行合法性判断;和/或所述安全微服务端根据所述安全组件签名的一致性进行合法性判断;和/或所述安全微服务端根据是否存在所述安全组件签名进行合法性判断。其中,签名时间戳和是否存在安全组件签名的合法性判断用于实现防重放处理;安全组件签名的一致性的合法性判断用于实现防篡改处理。
具体的,安全微服务端根据所述安全组件签名中的签名时间戳进行合法性判断,包括:所述安全微服务端从所述安全组件签名中获取所述签名时间戳;所述安全微服务端判断所述签名时间戳是否大于安全微服务端当前时间戳;如果大于,所述安全微服务端判定所述安全组件签名不合法;如果小于,且所述签名时间戳与所述安全微服务端当前时间戳之差大于预设时间阈值,所述安全微服务端判定所述安全组件签名不合法;如果小于,且所述签名时间戳与所述安全微服务端当前时间戳之差不大于预设时间阈值,所述安全微服务端判定所述安全组件签名合法。
安全微服务端根据是否存在该安全组件签名进行合法性判断,具体包括:若缓存中预留有所述安全组件签名,则说明该安全组件签名已经使用过,即已过期,不合法;若缓存中无该安全组件签名的记录,则说明该安全组件签名未使用过,合法,然后需对该安全组件签名进行验签。
安全微服务端根据安全组件签名的一致性进行合法性判断过程,即对安全组件签名进行验签的过程,可以是安全微服务端从安全组件签名中获取对应的参数,然后根据安全组件签名的获取过程生成新的安全组件签名,判断这两个签名是否一致。新的安全组件签名的生成过程与步骤101近似,在此不再一一赘述。
步骤105,判断结果为合法时,过滤组件将业务请求路由到业务服务端相应的业务API接口进行后续业务处理。
具体的,若判断结果为合法时,过滤组件将业务请求路由到具体的API接口,由业务API接管后续的正常业务逻辑;若判断结果为不合法时,过滤组件直接返回判断结果到客户端,此次业务请求失败。
进一步的,如图2所示,在步骤101之前,还包括初始化过程:
步骤106,客户端加载预设的安全组件。
步骤107,客户端判断安全组件是否加载成功。
在本实施例中,步骤107中,若客户端设备是Android平台,则可以通过hashcode判断安全组件是否加载成功;若客户端设备是IOS平台,则可以通过静态库文件判断安全组件是否加载成功。
在本实施例中,如果通过步骤107确定加载失败,则重新执行步骤106的加载过程或退出;如果通过步骤107确定加载成功,可以直接执行步骤101的获取安全组件签名过程。
本发明实施例提供的技术方案,通过客户端预先加载的安全组件提供本地的安全处理逻辑,实现统一防护;同时通过业务服务端的预设过滤组件实现针对性的业务防护。安全组件与过滤组件的加载是基于源码的透明部署,不影响原有业务逻辑,不必增加硬件部署,也不会改变网络结构;过滤组件将业务请求路由到具体的业务API接口,与业务强结合;安全微服务端对业务的不同需求进行统一的安全防护,能快速实现统一的业务接口防篡改/防重放的安全防护效果;而且,安全微服务端容易自定义,扩展性较强。本发明实施例提供的技术方案,能够在实现统一防护的同时与业务进行有效结合,解决了现有技术中采用waf或类似waf的检测和拦截技术时,难以和业务有效结合,定义业务的逻辑规则;采用针对式的编码防护时,存在防护不全,不方便统一管理的问题。
实施例二
如图3所示,本发明实施例提供一种安全防护装置,包括:
客户端301,所述客户端预先加载安全组件;所述客户端用于在需要发送业务请求时,通过所述安全组件获取安全组件签名;向预先连接的业务服务端发送业务请求,所述业务请求包括所述安全组件签名;
预设过滤组件3021的所述业务服务端302,所述过滤组件与所述客户端和安全微服务端相连,用于拦截所述业务请求,并调用所述安全微服务端进行处理;
所述安全微服务端303,与所述客户端相连,用于根据所述安全组件签名进行合法性判断,并将判断结果返回给所述过滤组件;
所述过滤组件,还用于接收所述安全微服务端返回的判断结果;所述判断结果为合法时,将所述业务请求路由到所述业务服务端相应的业务API接口进行后续业务处理。
在本实施例中,通过客户端301、业务服务端302和安全微服务端303实现安全防护的过程,与本发明实施例一提供的相似,在此不再一一赘述。
进一步的,为了对安全微服务端的安全策略进行统一的配置和维护,如图4所示,本实施例提供的安全防护装置,还包括:
风险管理模块304,用于配置策略数据库;所述风险管理模块包括:防篡改策略配置单元、防重放策略配置单元、白名单策略配置单元、API管理单元和风险管理单元中的一种或多种;
所述策略数据库305,与所述安全微服务端和所述风险管理模块相连,用于存储所述风险管理模块的配置数据;
所述安全微服务端,具体用于根据所述安全组件签名和配置数据进行合法性判断。
在本实施例中,可以通过风险管理模块配置策略数据库,以备安全微服务端调取并执行防篡改/防重放等措施,从而实现统一的风险管理。本发明实施例的安全微服务端对业务的不同需求进行统一的安全防护,能快速实现统一的业务接口防篡改/防重放的安全防护效果;而且,安全微服务端容易自定义,扩展性较强。
本发明实施例提供的技术方案,通过客户端预先加载的安全组件提供本地的安全处理逻辑,实现统一防护;同时通过业务服务端的预设过滤组件实现针对性的业务防护。安全组件与过滤组件的加载是基于源码的透明部署,不影响原有业务逻辑,不必增加硬件部署,也不会改变网络结构;过滤组件将业务请求路由到具体的业务API接口,与业务强结合;安全微服务端对业务的不同需求进行统一的安全防护,能快速实现统一的业务接口防篡改/防重放的安全防护效果;而且,安全微服务端容易自定义,扩展性较强。本发明实施例提供的技术方案,能够在实现统一防护的同时与业务进行有效结合,解决了现有技术中采用waf或类似waf的检测和拦截技术时,难以和业务有效结合,定义业务的逻辑规则;采用针对式的编码防护时,存在防护不全,不方便统一管理的问题。
以上实施例的先后顺序仅为便于描述,不代表实施例的优劣。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。