检测sql注入攻击的方法及装置、电子设备制造方法及图纸

技术编号:29401757 阅读:24 留言:0更新日期:2021-07-23 22:39
本申请实施例提供一种检测sql注入攻击的方法及装置、电子设备。所述方法包括:基于部署在目标应用上的java代理程序拦截所述目标应用发送的涉及数据库连接的函数;获取所拦截的函数中sql参数,并确定所述sql参数中是否存在第一预设字符;如果是,将所述函数所调用的sql语句确定为可疑sql;其中,所述可疑sql为疑似sql注入攻击的sql语句。

【技术实现步骤摘要】
检测sql注入攻击的方法及装置、电子设备
本申请实施例涉及互联网
,尤其涉及一种检测sql注入攻击的方法及装置、电子设备。
技术介绍
sql注入攻击是指在正常sql语句中插入恶意代码,以使服务器在执行sql语句时一并执行恶意代码的攻击方式。在相关技术中,检测sql注入攻击的方式通常是借助检测工具。例如基于sqlmap工具检测sql注入。sqlmap是一个开源的注入攻击检测工具,使用该工具主要分为三步,第一步先通过测试人员拿到待检测系统的所有url,第二步使用sqlmap工具对所有url进行sql注入测试,第三步当发现sql注入攻击时获取数据库数据。其中,sqlmap工具原理主要使用字典进行爆破检测sql注入,由于字典的容量有限无法穷举所有攻击,因此实际应用中存在漏检的问题。
技术实现思路
本说明书实施例提供的一种检测sql注入攻击的方法及装置、电子设备:根据本说明书实施例的第一方面,提供一种检测sql注入攻击的方法,所述方法包括:基于部署在目标应用上的java代理程序拦截所述目标应用发送的涉及数据库连接的函数;获取所拦截的函数中的sql参数,并确定所述sql参数中是否存在第一预设字符;如果是,将所述函数所调用的sql语句确定为可疑sql;其中,所述可疑sql为疑似sql注入攻击的sql语句。可选的,所述java代理程序通过如下方式部署在目标应用上:在目标应用对应的服务器的启动命令行中添加“-javaagent”命令。可选的,所述拦截所述目标应用发送的涉及数据库连接的函数,包括:拦截所述目标应用发送的涉及数据库连接中执行动态sql的函数;和/或,拦截所述目标应用发送的涉及数据库连接中执行预编译sql的函数。可选的,所述执行动态sql的函数,包括以下至少一种:java.sql.Statement子类的execute(Stringsql)方法java.sql.Statement子类的executeQuery(Stringsql)方法java.sql.Statement子类的executeUpdate(Stringsql)方法。可选的,所述执行预编译sql的函数,包括:java.sql.Connection子类的prepareStatement(Stringsql)方法。可选的,所述方法还包括:将可疑sql中第一预设字符和所述第一预设字符包含的内容替换为第二预设字符,并合并相同的可疑sql语句。可选的,所述第一预设字符包括引号,所述第二预设字符包括问号。可选的,所述方法还包括:将所述可疑sql输出到审核平台,根据所述审核平台返回的审核结果对所述可疑sql进行处理。可选的,所述审核平台基于审核规则确定所述可疑sql是否属于sql注入攻击;如果审核平台无法识别则通过可视化方式展示所述可疑sql。可选的,所述基于审核规则确定所述可疑sql是否属于sql注入攻击,包括:获取所述目标应用发送的http请求的入参;比较所述可疑sql中的第一预设字符包含的内容,与Http请求的入参是否相同;如果相同,则确定所述可疑sql属于sql注入攻击。可选的,所述方法还包括:在确定可疑sql后,将所述可疑sql与本地维护的误报sql进行比较;其中,所述误报sql为被确定为非sql注入攻击的历史可疑sql;在任一可疑sql与误报sql相同时,将该可疑sql修改为正常sql。根据本说明书实施例的第二方面,提供一种检测sql注入攻击的装置,所述装置包括:拦截单元,基于部署在目标应用上的java代理程序拦截所述目标应用发送的涉及数据库连接的函数;检测单元,获取所拦截的函数中的sql参数,并确定所述sql参数中是否存在第一预设字符;确定单元,如果是,将所述函数所调用的sql语句确定为可疑sql;其中,所述可疑sql为疑似sql注入攻击的sql语句。可选的,所述java代理程序通过如下子单元部署在目标应用上:部署子单元,在目标应用对应的服务器的启动命令行中添加“-javaagent”命令。可选的,所述拦截单元中,拦截所述目标应用发送的涉及数据库连接的函数,包括:拦截所述目标应用发送的涉及数据库连接中执行动态sql的函数;和/或,拦截所述目标应用发送的涉及数据库连接中执行预编译sql的函数。可选的,所述执行动态sql的函数,包括以下至少一种:java.sql.Statement子类的execute(Stringsql)方法java.sql.Statement子类的executeQuery(Stringsql)方法java.sql.Statement子类的executeUpdate(Stringsql)方法。可选的,所述执行预编译sql的函数,包括:java.sql.Connection子类的prepareStatement(Stringsql)方法。可选的,所述装置还包括:合并单元,将可疑sql中第一预设字符和所述第一预设字符包含的内容替换为第二预设字符,并合并相同的可疑sql语句。可选的,所述第一预设字符包括引号,所述第二预设字符包括问号。可选的,所述装置还包括:处理单元,将所述可疑sql输出到审核平台,根据所述审核平台返回的审核结果对所述可疑sql进行处理。可选的,所述审核平台基于审核规则确定所述可疑sql是否属于sql注入攻击;如果审核平台无法识别则通过可视化方式展示所述可疑sql。可选的,所述基于审核规则确定所述可疑sql是否属于sql注入攻击,包括:获取所述目标应用发送的http请求的入参;比较所述可疑sql中的第一预设字符包含的内容,与Http请求的入参是否相同;如果相同,则确定所述可疑sql属于sql注入攻击。可选的,所述装置还包括:筛选单元,在确定可疑sql后,将所述可疑sql与本地维护的误报sql进行比较;在任一可疑sql与误报sql相同时,将该可疑sql修改为正常sql;其中,所述误报sql为被确定为非sql注入攻击的历史可疑sql。根据本说明书实施例的第三方面,提供一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为上述任一项检测sql注入攻击的方法。本说明书实施例提供了检测sql注入攻击的方案,通过java代理程序拦截目标应用发送的所有涉及数据库连接的函数,分析所述函数中的sql参数,如果sql参数包含有第一预设字符(即风险字符),则输出对应的函数所调用的可疑sql,这些输出的可疑sql就是疑似sql注入攻击的sql语句。如此,基于java代理技术对所有存在sql注入可能的sql语句进行全覆盖检测,避免漏检的问题。附图说明图1是本说明书一实施本文档来自技高网...

【技术保护点】
1.一种检测sql注入攻击的方法,其特征在于,所述方法包括:/n基于部署在目标应用上的java代理程序拦截所述目标应用发送的涉及数据库连接的函数;/n获取所拦截的函数中的sql参数,并确定所述sql参数中是否存在第一预设字符;/n如果是,将所述函数所调用的sql语句确定为可疑sql;其中,所述可疑sql为疑似sql注入攻击的sql语句。/n

【技术特征摘要】
1.一种检测sql注入攻击的方法,其特征在于,所述方法包括:
基于部署在目标应用上的java代理程序拦截所述目标应用发送的涉及数据库连接的函数;
获取所拦截的函数中的sql参数,并确定所述sql参数中是否存在第一预设字符;
如果是,将所述函数所调用的sql语句确定为可疑sql;其中,所述可疑sql为疑似sql注入攻击的sql语句。


2.根据权利要求1所述的方法,其特征在于,所述java代理程序通过如下方式部署在目标应用上:
在目标应用对应的服务器的启动命令行中添加“-javaagent”命令。


3.根据权利要求1所述的方法,其特征在于,所述拦截所述目标应用发送的涉及数据库连接的函数,包括:
拦截所述目标应用发送的涉及数据库连接中执行动态sql的函数;和/或,拦截所述目标应用发送的涉及数据库连接中执行预编译sql的函数。


4.根据权利要求3所述的方法,其特征在于,所述执行动态sql的函数,包括以下至少一种:
java.sql.Statement子类的execute(Stringsql)方法
java.sql.Statement子类的executeQuery(Stringsql)方法
java.sql.Statement子类的executeUpdate(Stringsql)方法。


5.根据权利要求3所述的方法,其特征在于,所述执行预编译sql的函数,包括:
java.sql.Connection子类的prepareStatement(Stringsql)方法。


6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将可疑sql中第一预设字符和所述第一预设字符包含的内容替换为第二预设字符,并合并相同的可疑sql语句。


7.根据权利要求6所述的方...

【专利技术属性】
技术研发人员:任迪郑高江峰
申请(专利权)人:杭州数梦工场科技有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1