SQL注入漏洞及防范策略研究与分析
摘要: 在网络信息技术的发展过程中,Web技术在企事业单位建立业务系统时应用较为广泛,但是Web系统在开发的时候存在很多的安全漏洞,如SQL注入漏洞,因此需要企业加强对漏洞的防范。本文深入分析了SQL注入漏洞的成因、检测方法以及防范措施,希望对保护我国的企业信息安全有积极意义。

引言:Web技术在应用的时候具有独立性、通用性以及集成性,因此在企业的管理系统开发与建设中应用较为广泛,在Web系统为企业工作带来方便的同时,也对企业的信息安全造成了严重的威胁。SQL注入漏洞是Web系统常见的安全风险漏洞,会导致严重的信息泄露,因此企业需要对其进行防范。

1SQL注入漏洞产生的原因

SQL注入漏洞是指在Web的交互过程中,攻击者在原本的程序中注入了恶意的SQL语句,由于原本的程序在设计的时候开发者没有重视安全问题,设计的验证并不严格,因此导致恶意语句能够更改其预计执行结果,使攻击者能够轻易地获取想要的信息,甚至攻击者可以向Web系统中注入木马病毒,从而获取网站的权限[1]。出现SQL注入漏洞的最主要原因在于开发者,如果开发者的技术水平较低、开发经验不足,在开发的时候不注意系统的安全性以及代码质量,就会导致系统失去安全性。或者开发者给用户较大的权限,代码设计存在问题,就会存在SQL注入漏洞。

2SQL注入漏洞的检测

2.1SQL注入漏洞的检测

在对Web网站进行SQL注入漏洞的检测时,技术人员可以有三种检测方法:第一种方法是手工验证,在应用这种方法的时候需要在回显注入的情况下完成,也就是在数据库对SQL语句进行执行以后,就会在其服务器出现各种页面,然后技术人员就可以根据这些回显的页面进行SQL注入漏洞的检测,从而检测出原本不存在的恶意语句。第二种方法是工具验证,技术人员在进行验证的时候需要SQL注入工具,对网站的漏洞进行扫描,从而快速、高效的检测出SQL注入漏洞。AMVS和SQL Poizon都是简单、方便的扫描器,能够对网站进行扫描,从而确定其是否有SQL注入漏洞。第三种方法是编写注入工具,也就是编写自定义的注入工具测试网站有没有漏洞,一般应用到的编写软件为Python。

2.2SQL注入漏洞的利用

在进行SQL注入漏洞的利用时,可以采取手工渗透的形式,构造payload,从猜字段开始一点一点地构造直至确定数据的显示位置,数据库中的函数也会和SQL语句一起构造出payload,而用户会收到数据库的执行结果。例如,布尔盲猜就是从字段名开始进行逐一的猜解,从而获取全部的数据。此种方法在使用的时候需要耗费大量的时间,但是却能够对1payload进行很好的控制,从而不会被安全工具发现。工具渗透是指利用注入工具SQLMap等,渗透到系统中,然后对目标网站进行拖库,此种渗透方法高效、精确,但是由于请求量较大,会触发安全机制,容易被网站的防火墙拦截。

3SQL注入漏洞防范策略分析

3.1设置防火墙

在Web运行的过程中,应用防火墙可以为其提供保护,确保其能够稳定、安全地运行,降低SQL注入漏洞存在的风险。在应用防火墙的时候,相关人员可以采取代码的形式将其嵌入到程序中,也可以使用硬件设备。防火墙在应用时最大的优点就是能够在原本的Web结构下对Web网站、数据库以及程序等进行保护,保证网络通信的高效处理。因此,应用防火墙,可以对应用程序进行加固处理,从而保证检测入侵的时效性,避免造成损失。例如,企业在应用防火墙的时候可以利用反向代理机制部署,借助于虚拟IP,隔离Web服务器,并根据需要设置防护细则,降低错误拦截,发挥出防火墙的最大作用。

3.2加固数据库

技术人员在使用Web网站的时候,需要对数据库进行加固,提高数据库的安全性,从而对数据进行有效的保护。企业在进行数据库的保护时,可以根据实际的情况,在用户访问数据库以及各项数据的查询与使用中设置权限,然后再降低非法获取权限的各项操作的权限[2]。企业还需要更改EXECUTE许可中所包含的各项内容,但是储存过程需要保留下来。在应用Web系统的时候,企业需要对其进行定期的更新,对程序进行修补,避免存在弱点或者是错误的地方,让攻击者有机可乘,对网站进行攻击,降低网站的安全性。

3.3优化信息存储

在对应用程序运行的过程进行存储时,需要使用到数据库,但是此数据库需要经过预编译,然后就能够利用缓存技术,让各项数据有更强的操作性能,同时还可以使用DBMS机制对数据库的访问权限进行控制,保护数据库的安全。在进行信息存储的过程中,如果使用简单的数据库进行数据存储,可能在存储的过程中还可以进行查询,但是经过预编译的数据库在存储信息的时候,用户的账号是无法进行数据查询的,能够有效保护信息安全,从而避免了攻击者对数据的更改,也就抑制了SQL注入的问题。

3.4特殊字符过滤处理

在Web程序中,存在着大量的字符,这些字符大部分是普通的字符,但是也有少部分是危险字符,技术人员需要对其中的特殊字符进行过滤,并使用格式变量对其进行处理,才能够安全应用。在Web程序中,特殊字符包括or、and、空格和注释符号,这些特殊符号所适用的方法也有所不同。例如,在进行or、and的过滤时,需要使用Ⅱ和&& 代替这两个字符,使用%a0代替空格,从而实现对这些字符的过滤。对于注释符号,技术人员则往往改变其结尾的形式,避免其被过滤掉。在应用中,注释能够对语句进行闭合,而开发者就利用这一点对结尾的形式进行替换,从而对其进行保护。此项技术在应用的时候非常简单,只需要对双引号内的参数进行替换,就能够实现。同时,在对注释符号进行过滤的时候,“-”还有另一层含义,因此非常容易被过滤掉,技术人员在使用中需要注意。

3.5使用输入验证

企业在对Web程序进行安全管理的时候,技术人员可以设置黑名单和白名单,验证应用程序中涉及到的用户输入。在具体的操作中,技术人员需要对白名单进行更改,添加新的输入规则,并利用白名单进行用户输入的数据及数据的格式标准等进行分析,从而判断用户的输入能否通过验证。而黑名单则是起到一种辅助的作用。企业在应用Web程序的时候,可以利用白名单进行规则的设置,然后对用户进行验证。输入规则可以分为两种:简单的参数类型限制或者是复杂的逻辑表达式或正则表达式。企业可以根据实际的需求,对Web程序进行输入规则的设置。黑名单在应用的时候可以对程序中的不良字符、非法模式等进行保护,这样用户在进行输入验证的时候,如果其存在黑名单的记录,系统就可以直接拒绝该用户的进一步访问,保护程序安全。

结论:总之,Web网站的开发者经验不足、安全性较低,会导致SQL注入漏洞在Web系统的应用中经常存在,对系统产生严重的危害。因此,企业在利用Web系统的时候,需要在网站开发的时候就要严格审核开发人员编写的代码,从源头上消灭漏洞。如果Web系统开发已经完成,就需要设置防火墙、加固数据库等方法,防范SQL注入漏洞。

参考文献:

[1]谢芳.SQL注入漏洞原理与防御技术分析[J].电脑编程技巧与维护,2021(06):160-162+175.

[2]李博文.浅谈SQL注入漏洞的检测与防范[J].技术与市场,2020,27(11):102-103.