[发明专利]一种防止SQL注入的方法在审
| 申请号: | 201710823393.X | 申请日: | 2017-09-13 |
| 公开(公告)号: | CN107644175A | 公开(公告)日: | 2018-01-30 |
| 发明(设计)人: | 魏兴慎;刘苇;韦小刚;祁龙云;吕小亮;宋子锋;黄益彬;韩勇;郭靓;杨维永 | 申请(专利权)人: | 南京南瑞集团公司;南京南瑞信息通信科技有限公司 |
| 主分类号: | G06F21/62 | 分类号: | G06F21/62;G06F17/30;G06F21/60 |
| 代理公司: | 南京纵横知识产权代理有限公司32224 | 代理人: | 董建林 |
| 地址: | 210003 *** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 防止 sql 注入 方法 | ||
技术领域
本发明涉及信息安全技术领域,具体涉及一种防止SQL注入的方法。
背景技术
SQL(Structured Query Language)是一种针对数据库的结构化查询语言,SQL语法多基于ANSI标准SQL92。一个SQL语句可执行一次查询请求或对数据库执行一次增删改操作。Web2.0时代的大量网站都是基于SQL进行数据的访问和保存,其中存在大量的代码都没有在应用侧对用户输入进行足够的安全检查,这些未经安全检查的SQL语句中可能包含了用户的恶意输入、Server变量注入和Cookie注入的恶意内容,例如SQL的某些恶意字符串等。这些用户输入在用户侧被拼接成为合法的SQL语句并在服务器上执行从而造成数据库中敏感数据泄露、数据库数据丢失。这将导致网站、数据库和数据都面临巨大安全风险。因此防御SQL注入成为服务提供者极为重要的安全任务。
SQL注入通常分为:(1)使用注释符(--##)截断正常查询语句或绕过SQL验证;(2)重言式攻击:在SQL的where条件中注入语句,使条件恒真,绕过验证提取数据;(3)不合法逻辑错误查询,获取数据库的信息,为下一步攻击做准备;(4)Union查询攻击,借助SQL关键字Union绕过数据库的验证,窃取数据;(5)附带查询攻击是当数据库允许执行多条语句时,在正常的SQL语句中执行任何SQL语句,达到攻击目的;(6)利用存储过程攻击是构造执行存储过程的命令达到攻击的目的;(7)推断则是在数据库管理员安全色织后,不合法逻辑错误的查询无法获取足够的信息,但使用推断方法,构造查询请求,根据数据库返回的响应内容,推断可注入的参数;(8)编码替换攻击将注入的文本替换编码,逃避检测;(9)二阶注入首先将攻击所用的编码合法的存入到数据库中,然后在数据库中合法读取攻击字段发起攻击。
SQL注入的检测方法通常包括白名单、黑名单技术即只有在白名单中的SQL语句才会被执行,在黑名单上的SQL/IP/关键字无法执行;特征检测技术认为注入的SQL语句通常带有一定的特征,如用户输入包含注释符,包含多条语句或包含SQL的关键字等,基于积累的安全特征进行SQL注入检查。很明显上述方法存在一定的局限性:基于特征检测的结果则取决于对注入攻击的特征集合是否全面、准确;白名单或黑名单技术则严格限制用户可使用的SQL语句必须在指定的SQL语句集合中,灵活性受到限制。
发明内容
本发明的目的在于克服现有技术中的不足,提供了一种防止SQL注入的方法,实现SQL注入的高效检测。
为解决上述技术问题,本发明提供了一种防止SQL注入的方法,其特征是,包括以下步骤:
步骤S1,应用程序代理和代理服务协商生成加密秘钥;
步骤S2,应用程序代理利用加密密钥对SQL语句的关键字加密,与用户输入拼接成SQL语句发送至代理服务;
步骤S3,代理服务对关键字加密的SQL语句进行解密,并对加密的SQL语句和解密后的SQL语句同时执行词法分析和语法分析生成语法树,若两者生成的语法树不相同,则认为存在SQL注入风险;若两者相同,则认为不存在SQL注入,将解密后的SQL语句发送到数据库执行;
步骤S4,数据库执行此SQL语句并返回执行的结果,代理服务在收到数据库返回结果后,转发给应用程序代理。
进一步的,步骤S1中,加密秘钥协商可采用非对称加密算法实现或用相同的随机化种子生成的随机数序列作为加密和解密秘钥。
进一步的,步骤S2中,对SQL语句的关键字加密采用对称加密算法,包括DES算法、3DES算法、TDEA算法、Blowfish算法、RC5算法或IDEA算法。
进一步的,步骤S3中,代理服务对SQL注入具体的检测程如下:
1)SQL代理服务器接收到加密的SQL语句S1后,对该语句进行解密生成S2;
2)对S1和S2分别进行词法解析和语法解析,生成相应的抽象语法树T1和T2;
3)若生成语法树T2失败,则说明SQL可能因为注入造成解密后语法错误,则可以直接判定为SQL注入;若生成语法树T2成功,则对比语法树T1和T2是否完全一致,若不一致,则判定为存在SQL注入;
4)如果存在SQL注入,则向应用程序代理返回错误信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京南瑞集团公司;南京南瑞信息通信科技有限公司,未经南京南瑞集团公司;南京南瑞信息通信科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710823393.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种旧水泥路面加宽改造路面结构组合
- 下一篇:一种道路边沟





