近几年,互联网黑客异常活跃,重大数据泄露事件、重大网络攻击活动几乎从未停止,而黑客攻击的对象也不断扩展:大型企业、创业公司、发展型企业、政府组织、医院等无一幸免。事实一再证明,在复杂的网络攻击面前,没有个人或集体可以免受攻击。下面为大家总结下,常见的网络攻击方式。
一、XSS攻击
XSS攻击的全称是跨站脚本攻击(Cross Site Scripting),为不跟层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。跨站脚本攻击也就是在网站里嵌入恶意脚本程序,当用户打开网站时,窃取Cookie,盗取信息。
#按持续时间分类:
1.非持久型攻击
非持久型xss攻击:顾名思义,非持久型xss攻击是一次性的,仅对当次的页面访问产生影响。非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户浏览器执行,从而达到攻击目的。
2.持久型攻击
持久型xss攻击:持久型xss,会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。
#按具体实现分类:
1.反射型:经过后端,不经过数据库, 数据流向是:浏览器 -> 后端 -> 浏览器。
2.存储型:经过后端,经过数据库,数据流向是:浏览器 -> 后端 -> 数据库 -> 后端 -> 浏览器。
3.DOM:不经过后端,DOM—based XSS漏洞是基于文档对象模型Document Object Model,DOM)的一种漏洞,dom - xss是通过url传入参数去控制触发的。数据流向是:URL-->浏览器。
#解决方案: 用户输入过滤
1、继承HttpServletRequestWrapper,然后重写(@Override)getParameter()、getHeader()等等方法。
2、上传不走HttpServletRequestWrapper,需要继承CommonsMultipartResolver,重写方法。
二、CSRF攻击
CSRF全称是跨站请求伪造(cross site request forgery),CSRF伪装受信任用户,向第三方平台发送恶意请求。
#CSRF攻击攻击原理及过程如下:
1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
3. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
5.浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求 其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行
#解决方案:
1、设置Cookie为HttpOnly、我们知道CSRF是通过窃取Cookie来发送恶意请求的,所以我们可以为Cookie设置HttpOnly属性,这样JavaScript或者Applet就不可以恶意发送请求了。
2、添加Token验证:竟然Cookie有被恶意窃取的可能性,那么我们或许可以另辟新径,我们可以在访问请求时加上Token,服务端再进行验证,Token验证通过则可以访问,否则限制访问,当然这个Token不可以放在Cookie里。
3、添加Referer识别:学习HTTP协议的你可能知道,在HTTP的请求头里有个参数叫Referer,这个参数其实就是记录了请求的来源地址。
三、SQL注入攻击
所谓SQL注入攻击就是将一些恶意SQL执行指令伪装成SQL参数传给DBMS,这些恶意指令和已有SQL组成了新的SQL,然后执行恶意攻击。
#解决方案:
1、使用预编译语句学习JDBC都知道这个语句、Statement st = (Statement) conn.createStatement();创建一个Statement对象,看起来是没啥问题,可是对黑客来说这就是SQL注入的一个很好的代码缺陷了创建Statement对象后,之后我们就是要执行SQL,执行时候是这样的,是将SQL发送给DBMS编译然后再执行的,Statement没有编译的方法。不过PreparedStatement就不一样了,PreparedStatement继承Statement接口,有预编译的方法,编译SQL之后呢,在发送给DBMS执行。MyBatis中的$和#的区别,应谨慎使用$,因为他是不经过预处理的。
2、必要的加密预防SQL注入有时候是有必要进行一些加密措施的,比如用户密码这些重要信息,我们可以MD5加密一下,避免明文保存。
四、DDos攻击
DDos(Distributed Denial of Service),即分布式拒绝服务攻击,DDos攻击是基于Dos发展来的。什么是Dos呢?首先简单介绍一下Dos,Dos就是利用信任的客户端向服务端频繁发送请求,从而达到服务器处理不过来,请求超时。所以Dos其实就是一对一的,在服务器设施不太好的情况是有效的,对于性能极佳的服务器压根不管用了,所以就有了DDos,分布式拒绝服务攻击。DDos攻击过程大概是怎么样的呢?
竟然是分布式,首先黑客可能会通过程序控制大量的计算机,然后通过这个计算机群在同一个时间,发送大量的请求到目标服务器,从而达到服务器处理不过来,请求超时的情况。DDos常用方式:下面简单介绍一下两种DDos攻击的方式SYN Flood和DNS Query Flood。【SYN Flood】:SYN Flood是DDos的一种攻击方法,SYN Flood是互联网最经典的攻击方式之一。这个攻击是通过TCP连接建立的,攻击前先建立TCP连接,这个需要对TCP的三次握手和四次挥手协议有一定了解。【DNS Query Flood】:DNS Query Flood攻击从名称其实可以猜测出和DNS有关的了,首先简单介绍一下DNS,DNS(Domain Name System)是位于应用层的协议,负责域名解析服务,DNS通过域名查找IP地址,或逆向从IP地址反向查找域名。
攻击过程大致为:
通过程序控制,向目标服务器的DNS服务器,发送大量的域名解析请求,不过这些域名基本是随机生成的,比如改下端口什么的。DNS服务器接收到域名之后,先去缓存里查找是否有这个域名,然后发现没有,之后,DNS服务器就会向上层的DNS服务器递归查询了,指导向上查询了全球13台根DNS服务器。这时候肯定会出现域名解析超时的情况。
#解决方案:
1.DNS劫持中,使用https加密可以解决。部署全站HTTPS加密是防止流量劫持最基础、最重要的安全防护措施!HTTPS在HTTP基础上加入SSL/TLS协议,对服务器与终端、服务器与服务器之间的传输数据进行加密,保护数据的机密性并验证数据的完整性。通过HTTPS加密连接传输的数据,流经运营商、路由器、WiFi等任意节点时都是密文,即使被劫持或窃取,没有私钥也无法解密,确保数据在传输过程中全程安全。
2.SSL/TLS协议提供的身份认证机制,依靠SSL证书验证服务器身份真实性,确保数据传输到正确的通信方,防止虚假服务器钓鱼攻击,欺诈用户或窃取用户数据。全站部署HTTPS加密可以确保用户每一次连接、每一次访问都通过安全加密的方式进行,防止HTTP明文传输和局部HTTPS加密可能导致的安全风险。
以上攻击方式可分成三类,第一类的在数据中混入指令,是我认为最经典的攻击方式(开发者的原则:用户输入的不可信性),第二类是通过窃取凭据欺骗服务端的方式绕过安全检查;第三类是造成服务不可用(瘫痪)来达到攻击的目的。作为开发者应该有一定安全意识,这样才能开发出更好的产品。
网友评论