安全架构

CRSF攻击防范

简介
CRSF(Cross-site request forgery),意味跨站请求伪造。使用该攻击技术,恶意攻击者可以获取用户的信息,模拟用户对网站进行访问,以达到攻击的目的。如图
F4446C8F-7D7F-499F-93A1-FC1A6D68861E

解决方案
1.http设置http-only
    开启该选项后,则js无法获取浏览器中的cookie
2.增加_token校验
    主要是在表单中增加一个token的字段,该字段值会随着表单提交一起提交到服务器,当服务器接收到表单数据时,会对token字段值进行校验,不通过则不往下进行,从而保证表单提交的安全性。类似于这种验证的机制,在Laravel中是内置的。
3.增加Http的refer识别
    http中存在一个refer字段,如果某些页面的上一个请求是固定的(比如是xxx.com/goods/new),那么就可以去检查refer(比如检查是不是xxx.com/goods/new),从而保证请求是正确的。

文件上传漏洞
    当我们写一个文件上传类的时候,如果对自己要求高一点,可能会通过白名单机制去检查文件扩展名,再要求高一点可能会检查文件大小到底是不是超过了几兆啊之类的,当然单单检查扩展名和文件大小都是一些基础的操作,但对于我们的服务器安全来讲还是有着巨大的作用。
    但是还是避免不了一些恶意攻击者会上传一些恶意文件,比如上传一些shell脚本,php脚本之类的,那么你可能会说那肯定上传不上来,直接检查扩展名肯定就过滤了啊,但是把luence.php改成luence.php.jpg还是可以上传上来的吧。所以单单检查文件的扩展名已经不是一个绝对可以解决问题的方法了。
    当一个恶意攻击者将一个具有恶意破坏性的文件A(可能是一个shell脚本),扩展名A.sh重命名为A.jpg,那么就绕过了第一道防线,但是我们还有第二道防线:检查文件Mime类型,如果文件Mine类型不能通过验证,那么这个A.sh也就被阉割了。但是,这个文件扩展名可以改的话,那Mime类型肯定也可以改啊,高明的黑客有很多的方法,那么就需要我们的第三道防线。
    当文件Mine类型都改了,那么我们可以还可以做什么呢?每一种文件都会有一个文件头来做唯一的标识,我们可以读取文件的前28个字节,并事先准备好各种文件的前28个字符的枚举数组来做对比,最终才可保证文件上传。

7BDBB762-6855-4339-A6C5-D3D46750B5C8

DDOS攻击
    说到攻击,肯定不得不说DDOS攻击,该攻击是利用公共网络上大量的计算机(肉鸡)来对服务器短时间内发起大量请求,直到服务器的运算能力跟不上的时候导致服务器功能使用不了的时候就达到了目的。
常见的DDOS攻击有

  • SYN-Flood
  • DNS Query Flood(Udp Flood)
  • CC攻击(HTTP攻击)
  • SYN-Flood
        现今大量的网络请求都是通过HTTP来实现网络互通,而HTTP的底层实现基于TCP来实现,而建立TCP的过程大家都知道有个三次握手,如下图
    0EA6F5FF-C08E-4D44-9027-24AF8436F4F4
    可以看出建立TCP的过程是很复杂的,而且其中还包含了网络的延迟等等过程。而SYN-Flood正是利用这个漏洞而出现的,当服务器接收到客户端发来的ACK指令的时候,服务器会响应并返回给客户端SYN-ACK,这时服务器会将这些客户端请求信息加入响应队列中并预留出一部分的资源去等待客户端再次响应以完成三次握手,而如果客户端迟迟不来确认,那么服务器会消耗一定的时间和资源去等待,所以如果当客户端的量越来越大时,响应队列会达到峰值,以至于拖垮服务器,这就是SYN-Flood。

    安全架构
    Tags:

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注