APP下载

安全技术在计算机软件开发中的应用

2018-02-28王雅峰

电子技术与软件工程 2018年13期

王雅峰

摘要 本文主要介绍了软件开发中经常遇到的Web安全问题,常见的攻击方式如:CSRF攻击,ddos攻击以及SQL注入等,在软件开发中应加强网站的防护意识,加强网站的安全性。

【关键词】Web安全 CSRF攻击 ddos 攻击SQL注入

1 Web安全技术概述

目前由于一系列新形式下的互联网产品(例如,微信、手机APP、小程序等)的应用,很多Web业务都需要依赖于互联网,企业信息化的过程中就是将各种应用都架设在Web平台上,例如说社交网路、网上银行APP、网络购物APP和小程序、网络游戏等。

Web业务的迅速发展也引起许多攻击者对服务器进行攻击,他们通过各种手段恶意获取客户的个人信息从而获取利益。造成这些漏洞的主要原因是:

(1)当初的TCP/IP的设计没有把安全问题考虑进来,致使数据没有任何安全防护措施的在网络上传输。而应用层面的软件程序本身也存在很多漏洞,诸如恶意挂马、SQL注入漏洞等攻击的流行。

(2)将挂马或病毒代码绑定在一些文件中,再利用各种低俗图片或标题,引起用户的好奇心,然后引诱访问用户去下载或单击运行。对Web服务器的进行攻击的手段也是种类繁多,常见的有在网页中植入恶意代码、SQL注入漏洞、通过恶意代码(挂马)获取Web服务器的控制权等使得网站访问者受到侵害,这些恶意攻击中,常见的攻击形式有:DDOS攻击、CSRF攻击以及SQL注入。

2 DDOSI击简介

拒绝服务( Denial of Service,DOS)攻击,主要借助于C/S技术,将多个客户端联合起来作为攻击平台,然后对一个或多个服务器端发动攻击,利用看似合理的服务请求来占用过多的服务资源,使服务器疲于应付客户端发来的虚假请求,而无暇响应真正请求的过程。

随着千兆级别网络技术的发展,计算处理能力的增长,内存的增加,使得DoS攻击的目标对恶意攻击包的抵御能力加强了不少。这时候分布式的拒绝服务攻击( DistributedDenial of Service,DDoS)的攻击方式就应运而生了。DDoS攻击在网络上占领很多的”肉鸡”,并且控制這些”肉鸡”来发动DDoS攻击,这样就可以利用更多的客户端来发起比以前更大的规模来进攻受害者。

2.1 DDOS攻击方式

由于DDOS攻击采取分布式的攻击手段,使攻击模式从传统的pomt对pomt的攻击模式,转变为无规律的攻击方式,这样服务器很难对攻击进行区分;在进行攻击的同时,通过伪装的数据包和伪造的IP地址,这样服务器就很难查找和确定攻击地址,也就很难检验出DDOS攻击。

就攻击特点来说,DDOS攻击方式主要有以下几种:

(1)攻击的服务器上有大量等待响应的请求;

(2)通过向被攻击主机提交大量无用的数据包,使主机无暇响应;

(3)伪造虚假IP地址,使该真正IP的用户无法访问服务器;

(4)利用伪造IP提供的请求协议上的缺陷,反复高速发出特定请求,使主机无法访问普通请求。

2.2 DDOS攻击特点

DDOS方式在进行攻击的时候,利用了TCP/IP协议的漏洞,并进行集中攻击目标的流量地址,并选择使用随机的端口来进行攻击,一个服务器若是处理这些大量的半连接信息而消耗大量的系统资源和网络带宽。使用固定的端口进行攻击的时候,会向同一个端口发送大量的数据包,或通过数千端口对攻击的目标发送大量的数据包,在攻击的时候就不会出现拥塞控制,这样服务器就不会再有空余去处理普通用户的正常请求(因为客户的正常请求比率很小),从而服务器就无法工作了。

2.3 DDOS主要的攻击手段

DDOS攻击手段当前流行的主要有三种:

2.3.1 Connection Flood攻击

这种攻击是连接耗尽式攻击,典型的用小流量冲击大带宽网络服务的攻击方式,对防火墙带来的冲击也是很明显的。这种攻击的原理是利用真实的IP地址向服务器发起大量的连接,防火墙等防护设备是无法根据简单的SYN包来判断是否是正常连接的,只有当连接建立之后才有可能判断连接是否是恶意的,但此时已经对服务器和防火墙造成了一定的影响,并且建立连接之后很长时间不释放,占用了大量的连接表项,防火墙的负载和内存使用率将会明显上升。

2.3.2 ACK Flood攻击

这种攻击方法是在建立TCP连接之后,可通杀各种系统的网络服务,主要是通过向受害主机发送大量伪造源IP和源端口的带有ACK标志位的TCP报文,主机收到后检查该数据包所表示的连接是否存在,如果存在则检查该数据包所表示的状态是否合法,如果该数据包不合法,则主机会回应RST包告诉对方此端口不存在。导致主机忙于发送回应包或缓存资源被耗尽而造成拒绝服务,而源IP和源端口都是伪造的所以追踪起来比较困难,需要高带宽的僵尸主机支持。

2.3.3 HTTP Get攻击

这种攻击主要是针对SQLServer、MySQL、Oracle等数据库的网站系统,并不断的向其ASP、JSP、PHP或CGI等脚本程序提交查询、列表等大量耗费数据库资源的调用,是经典的以小博大最有效的攻击方法。常见的现象就是网站加载速度过慢、脚本程序失效或连接数据库失败、数据库主程序耗费的资源偏高。这种攻击的特点是攻击者只需通过Proxy代理向主机服务器大量递交get指令,只需要几分钟的时间就会把Web服务器资源消耗掉从而导致其拒绝服务,缺点是有些Proxy攻击者的IP地址会暴露,并对只有静态页面的网站效果不明显。

2.4 防御基础

总体来说,对防范DDoS攻击主要可参考措施如下:

2.4.1 充分利用网络设备保护网络资源

所谓网络设备是指路由器、交换机、硬件防火墙等负载均衡设备,利用这些设备可将网络有效地保护起来。当网络被攻击时最先死掉的是路由器,所以首先要保证网络设备路由器、交换机、硬件防火墙等设备的时候要尽量选用质量好的产品。特别是一个公司使用了负载均衡设备,当大量攻击发生的时候请网络提供商在网络接点处做一下流量限制来对抗某些种类的DDOS攻击是非常有效的,从而最大程度的削减了DdoS的攻击。

2.4.2 在骨干节点配置防火墙

要定期扫描现有的网络骨干节点,骨干节点上的计算机因为具有较高的带宽,往往是黑客利用的最好的位置,及时清现可能存在的安全漏洞或对新出现的漏洞及时进行修补,在发现某些骨干节点受到攻击的时候,可以将攻击导向牺牲一些主机,这样可以保护真正的主机不被攻击。无论是路由器还是防火墙设备要尽量避免采用网络地址转换NAT的使用,硬件防火墙本身就能抵御DDoS攻击和其他一些攻击。而连接到网络骨干节点的都是服务器级别的计算机,对这些主机本身加强安全是非常重要的,所以定期扫描漏洞就变得更加重要了。

2.4.3 限制SYN/ICMP流量

足够的网络带宽或者拥有足够的容量和足够的资源给黑客攻击,直接决定了能抗受攻击的能力。早期通过限制SYN/ICMP流量是防范DDOS的最好的方法,用户可以路由器上配置SYN/ICMP的最大流量来限制SYN/ICMP封包所能占有的最高频宽,这样在黑客不断访问用户、夺取用户资源之时,出现大量的超过所限定的SYN/ICMP流量时,自己的能量也在逐渐耗失,或许未等用户被攻死,黑客已无力支招儿了。虽然目前该方法对于DDOS效果不太明显了,不过仍然能够起到一定的作用。

2.4.4 把网站做成静态页面

事实证明,把网站适当放一些不做数据库调用脚本或尽可能做成静态页面,不仅能大大提高抗攻击能力,而且还给黑客入侵带来不少麻烦。此外,经验表明使用代理访问你网站的80%属于恶意行为,所以最好在需要调用数据库的脚本中拒绝使用代理的访问。

2.4.5 检查访问者的来源,过滤不必要的服务和端口

在有网络带宽保证的前提下,過滤不必要的服务和端口,只开放80而将其他所有端口关闭或在防火墙上做阻止策略,通过反向路由器查询的方法检查访问者的IP地址是否是真,要有效对抗每秒10万个SYN攻击包,即在路由器上过滤假IP,如果是假的,将予以屏蔽,成为目前很多服务器的流行做法,可减少假IP地址的出现,有助于提高网络安全性。

3 跨站请求伪造CSRFI击

3.1 CSRF攻击简介

跨站请求伪造(Cross-site requestforgery,CSRF),是一种对网站的恶意利用,CSRF攻击的主要目的是攻击者盗用了你的身份,让用户在不知情的情况发送恶意请求。CSRF能够做的事情包括:恶意复制用户账户,可以伪造某一个用户的身份给其好友发送带有木马程序或者一些欺骗信息(比如借钱之类的)垃圾信息,利用当前的登陆状态,让用户在不知情的情况下,帮你发帖或干其他事情等。

3.2 CSRF漏洞现状

CSRF这种攻击方式是一种对网站的恶意利用,在2000年已经被国外的安全人员提出。尽管听起来像跨站脚本(xss),但它与XSS非常不同,并且攻击方式几乎相反。在国内,直到2006年CSRF攻击才开始被关注,2008年,国内外的多个大型社区和交互网站分别爆出CSRF漏洞。xss是利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。互联网上的许多站点仍对此毫无防备,与xss攻击相比,CSRF攻击往往不大流行和难以防范,因此对其进行防范的资源也相当稀少,所以被认为比xss更具危险性。

3.3 CSRF漏洞防御

CSRF的漏洞防御可以从客户端(client)和服务器(server)端两方面着手,是从服务器端着手的防御效果效果比较好,服务端的CSRF方式方法多样,现在一般的CSRF防御也都是在服务端进行。

3.3.1 在客户端页面增加伪随机数

所有表单都包含同一个伪随机值( Cookie+ Hashing):

这可能是最简单的解决方案了,因为攻击者在理论上不能获得第三方的Cookie。方法是先构造加密的Cookie信息,如:

<!--?php

?>

这个方案基本上可以杜绝99%的CSRF攻击了,而另外的1%的不安全性,一般的攻击者看到有需要算Hashing值,基本都会放弃了。但是需要100%的杜绝CSRF攻击,这不是最好的方法。

3.3.2 验证码

这个方案的思路是:每次都需要用户在表单中填写一个图片上的随机字符串生成的验证码,在提交操作前需要输入验证码,从而防止恶意请求。这个方案可以完全解决CSRF,但是考虑到客户端易用性方面,验证码图片的使用涉及了一个MHTML的Bug,可能会在低版本的IE浏览器上不太友好。

3.3.3 在请求地址中添加token并验证

检查请求过程中是否会产生一次性令牌,这是当前Web应用程序的设计人员广泛使用的一种方式。CSRF攻击之所以能够成功,是因为黑客可以完全伪造用户的请求,如果存在这个由server端生成的令牌,关键在于在请求中放入黑客所不能偽造并不存在于cookie之中的信息。抵御CSRF,由编程人员控制在客户端发送get请求或post请求时,使请求携带本令牌然后在Server端进行验证。如果请求中没有token令牌或者token令牌内容不正确,则认为可能是CSRF攻击而拒绝该请求。

token令牌生成和使用的步骤如下:

1)首先生成令牌生成函数(getToken(》

<!--?php