深圳网站制作-网站设计-深圳网站建设
0755-28441905

常见的网络攻击及各种解决方案

2022-11-13

常见的网络攻击有哪些

首先呢简单介绍一下目前常见的几种网络攻击:

XSS攻击、SQL注入、CSRF攻击、上传文件攻击、DDos攻击


XSS攻击:Cross Site Script跨站脚本攻击,它指的是恶意攻击者往Web页面里插入恶意的html+javascript的脚本和代码,当用户浏览该页之时,嵌入其中Web里面的恶意脚本会被执行,从而达到恶意用户的特殊目的。

XSS攻击又分:反射型攻击跟持久型攻击。

image.png

第一种XSS攻击是反射型攻击,可能通过图片或者flash的动图之类的诱导你点击一个URL链接。在这个URL链接里就嵌入他自己的恶意脚本,你点击URL链接之后,URL指向的是黑客自己的服务器上的一段恶意脚本,然后恶意脚本被返回到你的浏览器里就会运行,就可以控制你的浏览器里的行为了,比如说脚本可以自动让你关注某个用户ID,然后控制你自动发布一个带有病毒的微博等。

另外一种XSS攻击叫持久型攻击,举个例子,比如某个论坛、或者社交网站之类的系统,你可以发布一些帖子,或者是评论,此时黑客就可以在里面写一段恶意脚本,然后把恶意脚本混杂在评论内容里提交到你的网站的数据库里去。后面比如其他用户在社交网站里浏览到了你的这个评论,评论内容会被返回到浏览器里去,此时评论内容是包含恶意js脚本的,马上恶意脚本运行。达到攻击的目的。

解决方案:


消毒机制,对用户输入的内容进行转义,比如说把>转义为&gt之类的,这样就可以把恶意脚本里的html标签、js代码之类的东西,都给转义掉,让这些恶意脚本失效。

HttpOnly方式,如果你在浏览器里存放cookie的时候,可以设置一个HttpOnly属性,比如说存放用户加密认证信息的cookie,这样的话,在浏览器里运行的js脚本是被禁止访问这些HttpOnly

cookie的,他就无法窃取你在浏览器里存储的cookie了。

sql注入攻击

SQL注入攻击通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,比如删库等。

但是如果要给你搞SQL注入,其实也不是那么容易的,因为必须要知道你的数据库表结构才行,一般获取数据库表结构的方式就下面几种:


如果你使用的是开源软件,比如开源的博客系统,论坛系统等,那么人家自然知道你的表结构了,这种情况是比较少见的

错误回显,大意就是你的程序报错了,结果直接在浏览器页面上显示出来了你的异常堆栈信息,包括有错误的SQL语句,通过这个,黑客直接就知道你的表结构了

根据你的请求参数的名称,大致推测你的数据库表结构,这个一般不太现

防止sql注入的办法:


别让人家知道你的数据表结构,关闭web服务器的错误回显,显示一个400,500之类的错误码就可以了。

要用预编译的方法,mybatis、hibernate都是支持预编译的。不要直接拼接SQL语句。

CSRF Cross Site Request Forgery,垮站点请求伪造

攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。

简单来说,例如利用XSS跨站点脚本攻击,获取cookie,拿到你的用户信息,然后再伪造成你发送垮站点伪造请求。


防御CSRF的方法主要是以下几种:


防止cookie被窃取,可以给你的网站的cookie设置HttpOnly属性,禁止被别人的script脚本窃取,那么别人就无法伪造用户登录请求了

随机token,每次返回一个页面给你的时候,都生成一个随机token附加在页面的隐藏元素里,同时在你的redis里可以存一下,然后页面发送请求的时候附加随机token,验证通过才能执行请求。

验证码,页面提交必须验证码通过了才能执行你的请求,避免黑客直接伪造请求发送过来,最好是在用户进行支付交易等重要业务,要求必须在页面上拖拽一个拼图验证码。

Referer请求头,http请求里有一个referer请求头,带有这个请求的来源,验证这个请求是不是从自己的页面里来的,如果是的话才执行,否则就不要执行。

上传文件攻击

如果我们的网站允许别人上传文件,那么文件可能是可执行的脚本,可能是病毒或者木马文件,如果是脚本的话,可能会在服务器执行,比如黑掉你的服务器、连接你的数据库之类的。

解决方案:


进行白名单校验,限制上传文件的类型,只能是我们指定的,而且要限制文件的大小,对文件重命名。

限制文件类型不能简单的根据后缀来判断,后缀可能被篡改,要根据文件二进制数据的开头几个字节代表的magic number来判断文件的类型。读取这个文件的二进制数据流,读取开头的几个字节,提取这个文件的魔数,根据魔数的值去判断他是什么类型的

最好对文件进行一定的压缩,这样可以破坏原来的文件结构,避免文件在服务器执行,利用imagemagick这种开源包,可以很方便进行文件缩放。

DDoS:distributed denial of service分布式拒绝服务攻击

DoS攻击,简单来说就是黑客发送大量的请求,导致你的服务器线程资源全部打满,正常用户根本无法发送请求,你的网站就宕机了。DoS攻击是一对一的,就是黑客搞一台高性能服务器,拼命发送请求给你的一台服务器。

DDoS的意思就是黑客控制大量的机器,比如普通人的电脑,或者是一些公司的服务器,被他的一些木马植入给控制了,就是所谓的“肉鸡”,然后黑客下达指令,让所有肉鸡一起发送请求给攻击目标,直接搞瘫你的服务器。


DDos常见的几种攻击方式:


- 基于SYN Flood模式的DDoS攻击:


先了解一下TCP三次握手:

1、客户端发送一个SYN请求,指明客户端的端口号以及TCP连接的初始序列号

2、服务器收到SYN后,返回一个SYN+ACK,表示请求被接收,TCP序列号加1

3、客户端收到服务器的SYN+ACK后,返回一个ACK给服务器,TCP序列号加1,连接建立完毕,接着可以通信了。


如果服务器没有收到第三步的ACK,会重试返回SYN+ACK给客户端,同时处于SYN_RECV状态,把客户端放入等待列表。重试会3~5次,每隔30重试一次,遍历等待列表,再次重试发送SYN+ACK


只要返回SYN+ACK给客户端,就会为客户端预留一部分资源,重试期间都保留,等待跟客户端建立连接;所以如果说太多的客户端来建立连接,资源耗尽,那么就无法建立新的TCP连接了。


所以黑客就会伪造大量的不同ip地址去发送SYN请求给一台服务器建立TCP连接,每次都是卡在服务器返回SYN+ACK,但是黑客是不会最终返回ACK的,所以导致服务器可能为了黑客建立了大量的半连接放在等待列表里,占用了大量的资源,还得不停的去重试。一旦服务器的资源耗尽,那么正常的请求过来,是无法建立TCP连接的。一旦你无法建立TCP连接,那么这台服务器也自然接受不了任何HTTP请求。


DNS Query Flood攻击


顾名思义,就是去攻击DNS服务器,也就是伪造大量的域名解析请求发送给DNS服务器,然后DNS服务器必然没有,接着必然会去找上级DNS服务器,一直到根域名服务器。导致DNS服务器的资源被耗尽,其他正常人浏览网页也要解析域名,此时就没法访问DNS服务器了。https://www.top028.net/ 



微信咨询号

一站式互联网服务提供商

深圳市灵点网络科技有限公司

更多了解请咨询:0755-28441905