1、http get攻击:通过大量主机对受寒者发起http get请求 ,超过服务器处理能力;
当耗费的是服务器的cpu时,称为cc攻击;文末说明cc的特殊处
2、防范:
限制一下几种情况:
一、控制 单台主机对服务器的并发数量
二、控制 单台主机的连续重复信息
三、控制 单台主机的http get 速率
四、http重定向,区分人机
3、详细:
一、
二、通过检测tcp cksum来判断是否为二中所述情况;因为
优点:可防护二所描述情况
缺点:当内容是变化的或形式变化(实际内容不变)时,无法防御
三、
优点:可控制速率,对攻击有一定抑制作用
缺点:无法根本解决问题; 对下1无法理解
四、这里的重定向 的目的是为了 通过重定向、重发这个过程来确定是否是浏览器在进行请求(浏览器可以自动处理重定向请求,以此来区分人机(假定为攻击者无法模拟浏览器处理重定向,如果攻击者软件也可以模拟处理重定向,那就加点料,比如下面的只有b知道的信息,再看攻击者能否,前面划掉的好像也不一定,为啥浏览器可以,模拟的就不可以?关键技术点是什么?到底能否模拟???!!!
这个点是:一般的自动化脚本是没有办法处理302、301重定向,除非带内置浏览器;))
详情如下:
优点:对无法模拟浏览器进行重定向请求处理的攻击,可以有效防御
缺点:1、实现难度:需要对tcp进行完整的代理 ?大么
2、对性能的影响大 ?大么 ------------>这个应该主要是由于重定向时会断开开始的链接 ;两次发起链接,增加了握手造成的性能浪费?,针对这个下图的方法给出了优化;
3、对业务的影响:如果给每个请求加重定向 呵呵哒
4、如果该重定向的跳转是有输入才跳转,则浏览器也无法处理
ps:其实个人觉得在业务中,对请求的处理结合身份验证可以简化一部分场景:当不是允许的身份发出的请求直接拒绝,返回错误页。不进
以上想法错误,这个攻击是利用get请求,只要能发请求,你服务器就得对这个请求进行处理;怎么判断处理与否才是解决方法(而不是上面说的处理完请求后进入下一步处理),这里给出的就是方法:判断人机,非人(浏览器)的直接抛弃
这个个方法优化了浪费性能的问题。
所说的弥补一种的缺陷即是指加了料,一中是没有加料的方法;
CC:由单台主机通过代理服务器发起大量耗费cpu的http get flood攻击
1、通过代理,逃避并发连接数检测(一般防火墙都可以检查并发连接数)
2、http get 请求会耗费大量的服务器cpu,(如触发后台服务器检索)
一般先需要找的漏洞,在发起攻击,属于缺陷攻击;
防护: