1.防火防盗防猪队友:不安全的第三方依赖包前端
举个例子,jQuery就存在多个已知安全漏洞,例如jQuery issue 2432,使得应用存在被XSS攻击的可能。而Node.js也有一些已知的安全漏洞,好比CVE-2017-11499,可能致使前端应用受到DoS攻击。算法
2.黑客能够利用SSL Stripping这种攻击手段,强制让HTTPS降级回HTTP,从而继续进行中间人攻击。浏览器
3.尽管有浏览器的同源策略限制,可是若是前端应用有XSS漏洞,那么本地存储的全部数据就均可能被攻击者的JS脚本读取到。若是用户在公用电脑上使用了这个前端应用,那么当用户离开后,这些数据是否也被完全清除了呢?前端对数据加密后再存储看上去是个防护办法,但其实仅仅提升了一点攻击门槛而已,由于加密所用到的密钥一样存储在前端,有耐心的攻击者依然能够攻破加密这道关卡。安全
因此,在前端存储敏感、机密信息始终都是一件危险的事情,推荐的作法是尽量不在前端存这些数据。性能
4.缺少静态资源完整性校验编码
出于性能考虑,前端应用一般会把一些静态资源存放到CDN(Content Delivery Networks)上面,例如Javascript脚本和Stylesheet文件。这么作能够显著提升前端应用的访问速度,但与此同时却也隐含了一个新的安全风险。加密
5.若是攻击者劫持了CDN,或者对CDN中的资源进行了污染,那么咱们的前端应用拿到的就是有问题的JS脚本或者Stylesheet文件,使得攻击者能够肆意篡改咱们的前端页面,对用户实施攻击。这种攻击方式形成的效果和XSS跨站脚本攻击有些类似,不过不一样点在于攻击者是从CDN开始实施的攻击,而传统的XSS攻击则是从有用户输入的地方开始下手的。code
防护这种攻击的办法是使用浏览器提供的SRI(Subresource Integrity)功能。顾名思义,这里的Subresource指的就是HTML页面中经过<script>
和<link>
元素所指定的资源文件。ip
每一个资源文件均可以有一个SRI值,就像下面这样。它由两部分组成,减号(-)左侧是生成SRI值用到的哈希算法名,右侧是通过Base64编码后的该资源文件的Hash值。资源