网络安全对前端童鞋来讲大多数时候都是听其有之,闻之则无,毕竟在现现在前端如火如荼的时代,大多数东西日益成熟,开箱即用,云服务、框架等已经帮咱们作了安全方面的防范,不须要咱们去太过于关心前端网络安全,做为一个前端爱好者,最近温习一下这部分知识,作了个简单的总结,顺道呈现给各位看官,请注意查收。前端
Cross-Site Scripting(跨站脚本攻击)简称 XSS,是一种代码注入攻击。攻击者经过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID 等,进而危害数据安全。ajax
根据攻击的来源,XSS 攻击可分为存储型、反射型和 DOM 型三种数据库
存储型攻击常发生在微博论坛等用户发帖、提交文章评论等地方
后端
反射型攻击主要发生在一些带有诱导性的连接的按钮邮件等
api
DOM型和反射性都是经过诱导用户点击连接执行,而且都是临时型的,可是反射型属于服务端安全漏洞而DOM型属于客户端安全漏洞
跨域
CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕事后台的用户验证,达到冒充用户对被攻击的网站执行某项操做的目的。浏览器
CSRF主要是冒用受害者登陆凭证发起恶意的增删改并不会窃取受害者隐私信息
缓存
弊端:SameSite试用阶段,兼容性不是很理想安全
弊端1:攻击者能够部分修改或者隐藏referer服务器
<img src="http://bank.example/withdraw?amount=10000&for=hacker" referrerpolicy="no-referrer">
弊端2: 某些浏览器或者操做会丢失origin头部,好比302重定向
弊端3:HTTPS页面跳转到HTTP页面,全部浏览器Referer都丢失。
弊端4:对于被动性攻击并不能识别
其余: 某些低版本浏览器对origin和referer并非很稳定,各类意想不到的结果,极其不稳定
弊端1:token鉴权对服务端压力较大,许专门开辟服务器用于token鉴权,耗费服务器成本而且增长请求时间
弊端2:对于页面ajax,fetch
等异步请求外的其余请求如form
提交,a连接等须要去挨个加token
,不能造成统一的token
增长入口,存在部分疏漏
相对而言token鉴权算是比较好的一种防御措施
cookie
来认证,在每一个请求的参数都附加scrfCookie='随机数'
防护参数,并在cookie
中混入该防护参数值,服务端将请求头部的cookie
中防护cookie
参数和请求参数所带的该参数进行比对弊端: 先后分离的代码,后端接口和前端可能不一样源,好比前端www.xx.com
,后端接口为api.xx.com
,前端要拿到后端接口域下的cookie
必须将cookie
都放在xx.com
下面才能保证全部子域均可以拿到,这样反而增长xss
攻击风险得不偿失
DOS攻击经过在网站的各个环节进行攻击,使得整个流程跑不起来,以达到瘫痪服务为目的。最多见的就是发送大量请求致使服务器过载宕机
DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围之外的请求放行,不然返回假的IP地址或者什么都不作使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址。其实本质就是对DNS解析服务器作手脚,或者是使用伪造的DNS解析服务器
DNS的劫持过程是经过攻击运营商的解析服务器来达到目的。咱们能够不用运营商的DNS解析而使用本身的解析服务器或者是提早在本身的App中将解析好的域名以IP的形式发出去就能够绕过运营商DNS解析,这样一来也避免了DNS劫持的问题。
内容劫持网上不多有提到,这也是在作httpDNS SDK所遇到的一个问题,其实内容劫持一开始的出发点是好的,是运营商为了加快用户的访问速度同时减小本身的流量损耗而作的一个缓存机制,用户在像服务器请求数据的时候运营商会把用户的请求转移到这个缓存池中,若是缓存中有就直接返回,没有的话再去像服务器请求而后拦截并缓存服务端给用户的回调数据,这样一来能够极大的下降运营商像服务器请求的次数,也能加快用户的访问,因此出发点是好,可是一些非法的商家对缓存池内部作一次些处理就是直接对返回的内容进行修改,这样一来咱们就会接受到错误的数据