1.XSS
反射性(非持久性)
诱导用户点击恶意链接来造成恶意攻击
步骤:
1.用户点击访问带有恶意脚本代码参数的URL
2.服务端获取请求参数并且直接使用
3.服务端“反射”回结果页
4.用户打开并浏览这个页面,中招
特点:
一次性(非持久性)
通过用户点击链接引起,并不会存储到服务端
关于:
一些浏览器如Chrome其内置了一些XSS Filter可以防止大部分反射型XSS攻击
反射性XSS其实就是服务器没有对恶意的用户输入进行安全处理就直接反射响应内容,导致恶意代码在浏览器执行的一种XSS漏洞
存储型XSS
向页面注入脚本(服务端存储了客户端的数据,但没有做任何处理)
步骤:
1.客户端输入信息存储在漏洞 服务端
2.当用户访问该页面的时候会触发XSS攻击
特点:
将恶意代码存储到漏洞服务器中,用户浏览相关页面时发动攻击
DOM-Based型XSS
并不依赖于服务端,基于浏览器DOM解析的攻击
步骤:
1.用户打开带有恶意的链接
2.浏览器(客户端)在DOM解析时直接使用恶意数据
3.用户被攻击
常见的触发场景:
innerHtml,decument.write等通过脚本修改页面DOM
例子:
a.innerHtml = '美丽的标题'; // 原始 a.innerHtml = '<a href="www.baidu.com">美丽的标题</a>' // 修改后 b.innerHtml = '<a href=“‘ + xxx.value + ’”></a>' // 原始 b.innerHtml = '<a href="" onclick=alert(/XSS/) //"></a>' // 修改后
XSS payload:
窃取用户Cookie // doeumnet.cookie
识别用户浏览器(对不同版本的浏览器用户使用不同的攻击方式) // navigtoruserAgent
伪造请求 // 通过form表单伪造get/post请求
XSS钓鱼 // XSS payload + 钓鱼网站 (引诱用户进入网站输入账号密码,比如做类似LOL的网站,用户点击登录,实际上账号密码到了黑客的服务器)
防御:
1.给cookie设置httpOnly,设置之后页面上的脚本无法获取cookie,只有和浏览器交互的时候响应头会携带。
缺点:自己也不能使用cookie,不能从根本上解决问题
2.输入检查,输出检查。不信任用户输入的信息和后台返回的信息,对信息做转义,将<script><a>标签的</>进行转义。
2.CSRF
原理:
用户登录某个页面,黑客诱导用户访问网站,然后这个页面会在用户无感知的情况下跨站伪造请求,造成攻击。
特点:
用户不知情
跨站请求
参数伪造
防御:
1.加上验证码(影响用户体验)
2.referer验证
3.使用Token
3.XSS蠕虫
XSS加上CSRF
例子:
A页面有存储型的XSS攻击,同时有CSRF跨站请求伪造。当B访问A的时候,XSS恶意脚本同时调用CSRF,伪造一个请求在B的页面也发布这样一条带有攻击性的数据。同理,当这些用户的页面被访问,蠕虫就会越来越多,影响范围会越来越广。
4.DDOS
分布式拒绝服务,核心思想是通过大量非正常的请求, 来耗尽服务器的资源,使用服务器不能正常运行。
步骤:
1.黑客控制大量的“肉鸡”
2.“肉鸡”向服务器发生非正常请求
3.目标主机忙于处理非正常请求,耗尽资源,不能为合法用户服务
防御:
1.验证码
2.限制请求频率
3.扩容加带宽
5.HTTP被劫持
客户端和服务端通讯:
1.用户向服务端发送请求
2.服务器抓取到请求响应并返回数据
3.在用户和服务器通讯之间还有一个运营商(第三方),发送内容和返回的内容需要运营商做中间层处理
问题:
因为HTTP是明文传输信息,中间可能被运营商(第三方)截取然后在数据里面添加东西,造成页面上出现广告,弹窗或者其他恶意的信息等。
防御:
1.使用加密的方式来接收传递参数(对称加密,非对称加密)
2.使用HTTPS
以上。