DDOS、CC、sql注入,跨站攻击防护方法

web安全常见攻击解读--DDos、cc、sql注入、xss、CSRFhtml

 

一,DDos前端

https://www.cnblogs.com/sochishun/p/7081739.html#4111858node

http://nic.swu.edu.cn/s/nic/thyt/20180604/2555404.htmllinux

1.1 DDos介绍web

  DDoS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”。分布式拒绝服务攻击发起后,攻击网络包就会从不少DOS攻击源(俗称肉鸡)犹如洪水般涌向受害主机,从而把合法用户的网络包淹没,致使合法用户没法正常访问服务器的网络资源,所以拒绝服务攻击又被称之为“洪水攻击”,常见的DDOS攻击手段有SYN Flood、UDP Flood、ICMP Flood、HTTP Flood、NTP Flood、Connections Flood、Script Flood、DNS Query Flood等。sql

  什么是DDoS攻击?
  让咱们来举个例子,假设你开了一家店,生意还不错。
  此时隔壁家生意萧条的店主盯上了你。
  因而他雇佣来了一群闹事者上门,装成要买东西的顾客。
  你彻底目不暇接,并且他们老找你问这问那,东看西看,就是不买东西,还赖着不走!  
  而真正的顾客连进店的地方都没有了!这就是所谓的DDoS攻击——
  一群“恶意访问”、“堵店门”、“占空间”、还“调戏店员”的非法流量。数据库


1.2 DDos经常使用攻击方式express

1. SYN Flood:
  利用TCP协议的原理,这种攻击方法是经典最有效的DDOS方法,可通杀各类系统的网络服务,主要是经过向受害主机发送大量伪造源IP和源端口的SYN或ACK 包,致使主机的缓存资源被耗尽或忙于发送回应包而形成拒绝服务。
  TCP通道在创建之前,须要三次握手:
    a. 客户端发送一个包含SYN标志的TCP报文, 同步报文指明客户端所须要的端口号和TCP链接的初始序列号
    b. 服务器收到SYN报文以后,返回一个SYN+ ACK报文,表示客户端请求被接受,TCP初始序列号加1
    c.客户端也返回一个确认报文ACK给服务器,一样TCP序列号加1
    d. 若是服务器端没有收到客户端的确认报文ACK,则处于等待状态,将该客户IP加入等待队列,而后轮训发送SYN+ACK报文
  因此攻击者能够经过伪造大量的TCP握手请求,耗尽服务器端的资源。浏览器


2. HTTP Flood:俗称cc攻击
  针对系统的每一个Web页面,或者资源,或者Rest API,用大量肉鸡,发送大量http request。这种攻击主要是针对存在ASP、JSP、PHP、CGI等脚本程序,并调用MSSQLServer、MySQLServer、Oracle等数据库的网站系统而设计的,特征是和服务器创建正常的TCP链接,并不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用,典型的以小博大的攻击方法。缺点是对付只有静态页面的网站效果会大打折扣。缓存


3. 慢速攻击:
  Http协议中规定,HttpRequest以\r\n\r\n结尾来表示客户端发送结束。攻击者打开一个Http 1.1的链接,将Connection设置为Keep-Alive, 保持和服务器的TCP长链接。而后始终不发送\r\n\r\n, 每隔几分钟写入一些无心义的数据流, 拖死机器。


4. P2P攻击:
  每当网络上出现一个热门事件,好比XX门, 精心制做一个种子, 里面包含正确的文件下载, 同时也包括攻击目标服务器的IP。这样,当不少人下载的时候, 会无心中发起对目标服务器的TCP链接。

5. NTP Flood:

  NTP是标准的基于UDP协议传输的网络时间同步协议,因为UDP协议的无链接性,方便伪造源地址。攻击者使用特殊的数据包,也就是IP地址指向做为反射器的服务器,源IP地址被伪形成攻击目标的IP,反射器接收到数据包时就被骗了,会将响应数据发送给被攻击目标,耗尽目标网络的带宽资源。通常的NTP服务器都有很大的带宽,攻击者可能只须要1Mbps的上传带宽欺骗NTP服务器,就可给目标服务器带来几百上千Mbps的攻击流量。所以,“问-答”方式的协议均可以被反射型攻击利用,将质询数据包的地址伪造为攻击目标地址,应答的数据包就会都被发送至目标,一旦协议具备递归效果,流量就被显著放大了,堪称一种“借刀杀人”的流量型攻击。


1.3 DDos攻击类型判断

DDOS攻击现象断定方法
  1.SYN类攻击判断:
    A.CPU占用很高;
    B.网络链接状态:netstat –na,若观察到大量的SYN_RECEIVED的链接状态;
    C.网线插上后,服务器当即凝固没法操做,拔出后有时能够恢复,有时候须要从新启动机器才可恢复。
  2.CC类攻击判断:
    A.网站出现service unavailable提示;
    B.CPU占用率很高;
    C.网络链接状态:netstat –na,若观察到大量的ESTABLISHED的链接状态 单个IP高达几十条甚至上百条;
    D.用户没法访问网站页面或打开过程很是缓慢,软重启后短时间内恢复正常,几分钟后又没法访问。
  3.UDP类攻击判断:
    A.观察网卡情况 每秒接受大量的数据包;
    B.网络状态:netstat –na TCP信息正常。
  4.TCP洪水攻击判断:
    A.CPU占用很高;
    B.netstat –na,若观察到大量的ESTABLISHED的链接状态 单个IP高达几十条甚至上百条


1.4 DDoS攻击防护方法:

1. 过滤没必要要的服务和端口:
  可使用Inexpress、Express、Forwarding等工具来过滤没必要要的服务和端口,即在路由器上过滤假IP。好比Cisco公司的CEF(Cisco Express Forwarding)能够针对封包Source IP和Routing Table作比较,并加以过滤。只开放服务端口成为目前不少服务器的流行作法,例如WWW服务器那么只开放80而将其余全部端口关闭或在防火墙上作阻止策略。


2. 异常流量的清洗:
  经过DDOS硬件防火墙对异常流量的清洗过滤,经过数据包的规则过滤、数据流指纹检测过滤、及数据包内容定制过滤等顶尖技术能准确判断外来访问流量是否正常,进一步将异常流量禁止过滤。单台负载每秒可防护800-927万个syn攻击包。


3. 分布式集群防护:
  这是目前网络安全界防护大规模DDOS攻击的最有效办法。分布式集群防护的特色是在每一个节点服务器配置多个IP地址(负载均衡),而且每一个节点能承受不低于10G的DDOS攻击,如一个节点受攻击没法提供服务,系统将会根据优先级设置自动切换另外一个节点,并将攻击者的数据包所有返回发送点,使攻击源成为瘫痪状态。


4. 高防智能DNS解析:
  高智能DNS解析系统与DDOS防护系统的完美结合,为企业提供对抗新兴安全威胁的超级检测功能。智能根据用户的上网路线将DNS解析请求解析到用户所属网络的服务器。


5. 接入云高防及使用CDN加速


二,CC攻击

2.1 CC攻击介绍  

  CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,前身名为Fatboy攻击,也是一种常见的网站攻击方法。攻击者经过代理服务器或者肉鸡向向受害主机不停地发大量数据包,形成对方服务器资源耗尽,一直到宕机崩溃。相比其它的DDOS攻击CC彷佛更有技术含量一些。这种攻击你见不到真实源IP,见不到特别大的异常流量,但形成服务器没法进行正常链接。最让站长们忧虑的是这种攻击技术含量低,利用更换IP代理工具和一些IP代理一个初、中级的电脑水平的用户就可以实施攻击。

2.2 CC攻击防护方法

1. 利用Session作访问计数器:
  利用Session针对每一个IP作页面访问计数器或文件下载计数器,防止用户对某个页面频繁刷新致使数据库频繁读取或频繁下载某个文件而产生大额流量。文件下载不要直接使用下载地址,才能在服务端代码中作CC攻击的过滤处理

2. 把网站作成静态页面:
  大量事实证实,把网站尽量作成静态页面,不只能大大提升抗攻击能力,并且还给骇客入侵带来很多麻烦,至少到如今为止关于HTML的溢出还没出现,门户网站主要都是静态页面若你非须要动态脚本调用,那就把它弄到另一台单独主机去,免的遭受攻击时连累主服务器。

3. 加强操做系统的TCP/IP栈
  linux系统级别安全防护,开启后可能用影响服务器负载性能,具备两面性。

4. 在存在多站的服务器上,严格限制每个站容许的IP链接数和CPU使用时间,这是一个颇有效的方法。
  CC的防护要从代码作起,其实一个好的页面代码都应该注意这些东西,还有SQL注入,不光是一个入侵工具,更是一个DDOS缺口,设置访问数据库请求都必须一个随机参数在Session里面,全是静态页面,攻击就会没有效果。代码层的防护须要从点点滴滴作起,一个脚本代码的错误,可能带来的是整个站的影响,甚至是整个服务器的影响!

5. 服务器前端加CDN中转
  (免费的有百度云加速、360网站卫士、青牛云,又拍云等),若是资金充裕的话,能够购买高防的盾机,用于隐藏服务器真实IP,域名解析使用CDN的IP,全部解析的子域名都使用CDN的IP地址。此外,服务器上部署的其余域名也不能使用真实IP解析,所有都使用CDN来解析。 另外,防止服务器对外传送信息泄漏IP地址,最多见的状况是,服务器不要使用发送邮件功能,由于邮件头会泄漏服务器的IP地址。若是非要发送邮件,能够经过第三方代理(例如sendcloud)发送,这样对外显示的IP是代理的IP地址。总之,只要服务器的真实IP不泄露,10G如下小流量DDOS的预防花不了多少钱,免费的CDN就能够应付得了。若是攻击流量超过20G,那么免费的CDN可能就顶不住了,须要购买一个高防的盾机来应付了,而服务器的真实IP一样须要隐藏。

 

三,sql注入

https://baijiahao.baidu.com/s?id=1629045600845343519&wfr=spider&for=pc

https://www.cnblogs.com/binyao/p/4900393.html

3.1 sql注入介绍

什么是SQL注入式攻击

  所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或做为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击它经过将任意SQL代码插入数据库查询,使攻击者可以彻底控制Web应用程序后面的数据库服务器。攻击者可使用SQL注入漏洞绕过应用程序安全措施;能够绕过网页或Web应用程序的身份验证和受权,并检索整个SQL数据库的内容;还可使用SQL注入来添加,修改和删除数据库中的记录。

3.2 sql注入攻击类型

1 带内注入:
  这是典型的攻击,攻击者能够经过相同的通讯通道发起攻击并得到结果。这是经过两种带内技术完成的:
  ● 基于错误的SQL注入:从显示的错误消息中获取有关数据库的信息
  ● 基于联合的SQL注入:依赖于攻击者可以将UNION ALL被盗信息的结果与合法结果链接起来。
  这两种技术都依赖于攻击者修改应用程序发送的SQL,以及浏览器中显示的错误和返回的信息。
若是应用程序开发人员或数据库开发人员没法正确地参数化他们在查询中使用的值,那么它会成功。二者都是试错法,能够检测到错误。

2 盲注入:

  也称为推理SQL注入,盲注入攻击不会直接从目标数据库中显示数据;相反,攻击者会仔细检查行为中的间接线索。HTTP响应中的详细信息,某些用户输入的空白网页以及数据库响应某些用户输入须要多长时间,这些均可以是线索,具体取决于攻击者的目标。

3 带外注入:

  这种攻击有点复杂,当攻击者没法在单个直接查询 - 响应攻击中实现其目标时,攻击者可能会使用此攻击。一般,攻击者会制做SQL语句,这些语句在呈现给数据库时会触发数据库系统建立与攻击者控制的外部服务器的链接。以这种方式,攻击者能够收集数据或可能控制数据库的行为。二阶注入就是一种带外注入攻击。在这种状况下,攻击者将提供SQL注入,该注入将由数据库系统的单独行为存储和执行。当二级系统行为发生时(它可能相似于基于时间的做业或由其余典型管理员或用户使用数据库触发的某些事情)而且执行攻击者的SQL注入,那就是当“伸出”到系统时攻击者控制发生了。

3.3 防护sql注入

  1,不使用动态sql
  2,将用户登陆名称、密码等敏感数据加密保存
  3,严格限制数据库用户权限
  4,避免直接向用户显示数据库错误
  5,检查用户输入的合法性


四 xss跨站攻击

https://www.cnblogs.com/firstdream/p/7760490.html

4.1 xss介绍

跨站脚本攻击(Cross-site scripting,一般简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、偷取密码、传播恶意代码等攻击行为。恶意的攻击者将对客户端有危害的代码放到服务器上做为一个网页内容, 使得其余网站用户在观看此网页时,这些代码注入到了用户的浏览器中执行,使用户受到攻击。通常而言,利用跨站脚本攻击,攻击者可窃会话COOKIE从而窃取网站用户的隐私,包括密码。XSS攻击使用到的技术主要为HTML和Javascript,也包括VBScript和ActionScript等。XSS攻击对WEB服务器虽无直接危害,可是它借助网站进行传播,使网站用户受到攻击,致使用户账号被窃取,从而对网站也产生了较严重的危害。

4.2 xss漏洞修复

一:避免XSS的方法之一主要是将用户所提供的内容输入输出进行过滤 ,能够利用下面这些函数对出现xss漏洞的参数进行过滤
  1.PHP的htmlentities()或是htmlspecialchars()
  2.Python的cgi.escape()
  3.ASP的Server.HTMLEncode()
  4.ASP.NET的Server.HtmlEncode()或功能更强的Microsoft Anti-Cross Site Scripting Library
  5.Java的xssprotect(Open Source Library)
  6.Node.js的node-validator
二:使用开源的漏洞修复插件。


五 CSRF跨站请求伪造

https://www.jianshu.com/p/67408d73c66d

5.1 CSRF介绍

  CSRF攻击的全称是跨站请求伪造( cross site request forgery),是一种对网站的恶意利用,尽管听起来跟XSS跨站脚本攻击有点类似,但事实上CSRF与XSS差异很大,XSS利用的是站点内的信任用户,而CSRF则是经过假装来自受信任用户的请求来利用受信任的网站。你能够这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义向第三方网站发送恶意请求。 CRSF能作的事情包括利用你的身份发邮件、发短信、进行交易转帐等,甚至盗取你的帐号

5.2 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的恶意代码被执行。

5.3 CSRF防护

一、尽可能使用POST,限制GET

  GET接口太容易被拿来作CSRF攻击,接口最好限制为POST使用,GET则无效,下降攻击风险。固然POST并非万无一失,攻击者只要构造一个form就能够,但须要在第三方页面作,这样就增长暴露的可能性。

二、将cookie设置为HttpOnly

  CRSF攻击很大程度上是利用了浏览器的cookie,为了防止站内的XSS漏洞盗取cookie,须要在cookie中设置“HttpOnly”属性,这样经过程序(如JavaScript脚本、Applet等)就没法读取到cookie信息,避免了攻击者伪造cookie的状况出现。在Java的Servlet的API中设置cookie为HttpOnly的代码如:response.setHeader( "Set-Cookie", "cookiename=cookievalue;HttpOnly")

三、增长token

  CSRF攻击之因此可以成功,是由于攻击者能够伪造用户的请求,该请求中全部的用户验证信息都存在于cookie中,所以攻击者能够在不知道用户验证信息的状况下直接利用用户的cookie来经过安全验证。由此可知,抵御CSRF攻击的关键在于:在请求中放入攻击者所不能伪造的信息,而且该信息不存在于cookie之中系统开发人员能够在HTTP请求中以参数的形式加入一个随机产生的token,并在服务端进行token校验,若是请求中没有token或者token内容不正确,则认为是CSRF攻击而拒绝该请求。

四、验证 HTTP Referer 字段

  根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。在一般状况下,访问一个安全受限页面的请求来自于同一个网站

相关文章
相关标签/搜索