常见的web攻击手段
1、XSS 跨站脚本攻击,是攻击者在网页中嵌入恶意的脚本程序,用户打开网页的时候脚本会在客户端浏览器上执行,以盗取客户端cookie,用户名密码,下载执行病毒木马程序,获取客户端admin权限等
防范手段:发生是因为用户把输入数据变成了代码,对用户输入的数据进行html转义处理,比如尖括号、单引号、双引号等转义
2、CRSF攻击
CRSF 跨站请求伪造,是对网站的一种恶意利用,和XSS差别很大,XSS利用的是站点内的信任用户,而CSRF则是通过伪装来自受信用户的请求来利用受信的网站,通俗CSRF是攻击者盗用了你的身份,以你的名义向第三方网站发送恶意请求。CSRF能做的事情包括利用你的身份发邮件、发短信、进行交易转账,甚至盗取你的账号
防御手段:1)CRSF攻击很大程度是利用了浏览器的cookie,为防止站内的XSS漏洞盗取cookie,需要将cookie设置为httponly,这样通过javascript脚本等无法读取到cookie了
2)增加token,服务端随机生成token,在请求中放入攻击者所不能伪造的信息,该信息不存在cookie中,系统开发人员可以在http请求中以参数的形式加入一个随机token,并在服务端进行token的校验
3)通过referrer识别
3、sql注入攻击
通过sql命令伪装成正常的http请求参数,传递到服务端,欺骗服务器最终执行恶意的sql命令,达到入侵的目的,可以利用sql漏洞,查询非授权信息,修改数据库的数据,改变表结构,甚至获取服务器的root权限
sql注入预防手段:1)使用预编译语句,预编译语句PreparedStatement,在创建的时候就立即把sql传给DBMS了,当需要执行时,DBMS直接执行编译后的sql语句,而不像其他sql语句那样先将其编译,预编译语句使用占位符来替代需要动态传入的参数,这样攻击者没办法改变sql语句的结构,其实是预编译sql中特殊字符被转义了
2)使用orm框架
防止sql注入的关键是对关键字符进行转义,而常见的orm框架都支持对相应的关键字或特殊符号转义
3)避免密码明文存放
对存储密码单向hash,入md5,防止用户信息泄露(拖库),黑客无法直接获取用户密码,只能得到hash码,这种方式可能有彩虹表破解,可以使用hash加盐的方式,一定程度防止穷举和彩虹表攻击了
4)处理好相应的异常
后台异常,很可能包含服务器版本,数据库版本,编译语言等信息,甚至是数据库连接的地址与用户密码,防止错误信息直接输出到页面上
4、文件上传漏洞
文件、压缩文件上传服务端保存,文件上传攻击指的是恶意攻击者利用一些站点没有对文件的类型做很好的校验,上传了可执行文件或者脚本,或者通过脚本获取了服务器上相应的权利,或者通过诱导外部用户访问,下载上传的边度或者木马文件,达到攻击的目的。还有可能当上传的服务器当做免费的文件存储服务器使用
预防手段:对上传文件类型进行白名单校验,限制文件上传的大小,上传文件进行重命名,除了文件后缀判断,判断文件类型需要通过魔数判断,很多文件的起始几个字节内容是固定的,根据这几个字节内容可确定文件类型
5、DDoS攻击
分布式拒绝服务攻击,是目前最强大、最难预防的攻击方式之一,DoS是利用合理的客户端请求来占用过多的服务器资源,从而使合法用户无法得到服务器的响应,一般是一对一的方式。随着攻击目标的cpu速度、内存或者网络带宽各项指标随着计算机发展,能力显著提升,使得DoS攻击逐渐失去了效果,DDoS应运而生
DDoS它是借助公共网络,将数量庞大的计算机设备联合起来作为攻击平台,对一个或多个目标发动攻击,从而达到瘫痪目标机器的目的,通常攻击前,攻击者会提前控制大量的用户计算机,称之为“肉鸡”,并通过指令使大量肉鸡在同一时刻对某个主机进行访问,从而达到瘫痪主机的目的
随着硬件性能的提升,需要的机器规模越来越大,组织大规模攻击越来越难,现在已经不常见
常见的DDoS攻击手段
1)SYN Flood: 攻击者伪造大量的ip地址给服务端发送SYN报文,由于ip是伪造根本不存在,也就不可能从客户端得到任何回应,tcp在建立连接的时候接不到客户端收到SYN+ACK报文后的回应ACK报文给服务端,服务端会重试发送SYN+ACK给客户端3-5次,每隔30s一次,服务端在发送SYN+ACK的时候会预分配资源给即将建立连接的tcp链接,这个资源在重试的时候一直保留,服务器资源有限,维护的等待列表超过极限之后不再接受SUN报文,也就是拒绝建立新的tcp链接,正常用户无法完成三次握手与服务端进行通信,这边是SYN Flood 攻击
2 DNS Query Flood
是采用向被攻击的服务器发送海量的域名解析请求,请求域名是随机生成的,大部分根本不存在,并通过伪造端口和客户端ip,防止查询请求被ACL过滤,被攻击dns服务器接到请求后,首先会在服务器上查找是否有缓存,没有缓存且该域名无法直接由DNS服务器进行解析的时候,DNS服务器会向上层DNS服务器递归查找域名信息,到全球的13台根DNS服务器,大量不存在域名请求给服务器带来了很大负载,当请求超过一定量,DNS解析域名超时,达到了攻击目的
3 CC攻击
基于应用层http协议发起的DDoS攻击,也被称为HTTP Flood
攻击者通过控制大量肉鸡或利用从互联网搜寻的大量匿名http代理,模拟正常用户请求直到网站拒绝服务为止,大部分网站都有CDN或者分布式缓存加快服务端响应,这些精心构造的http请求有意避开这些缓存,多次查询DB或一次请求返回大量数据,加速资源消耗,从而拖垮后盾业务处理系统,CC攻击发起容易,预防难,影响广,是近年来DDoS攻击的主流方式,肉鸡这种容易被管理人员发现,攻击事件持续时间难以延续,http代理能发起持续高强度攻击,防守方很难在不影响业务的情况下对攻击请求过滤,大量误杀正常用户,间接打成攻击目的
其他攻击手段
DNS域名劫持,CND回源攻击、服务器权限提升、缓冲区溢出等