前端安全

一、XSS攻击 (跨站脚本攻击)

攻击方式

Cross Site Scripting,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。

存储型、反射型、基于 DOM

1.1 防范手段

  1. 将前端输出数据都进行转义;
  2. 将cookie等敏感信息设置为httponly,禁止Javascript通过document.cookie获得;

二、 CSRF攻击(跨站请求伪造)

Cross-site request forgery,网站中的一些提交行为,被黑客利用,你在访问黑客的网站的时候,进行的操作,会被操作到其他网站上(如:你所使用的网络银行的网站)。

  • 伪造请求不经过网站A
  • 伪造请求的域名不是网站A

2.1防范手段

  1. 增加验证码
  2. cookies设置sameSite: 设置sameSite属性的值为strict,这样只有同源网站的请求才会带上cookies;
  3. 验证referer: 根据 HTTP 请求头的referer来判断请求是否来自可信任网站;
  4. 验证csrf token: 服务端随机生成token,保存在服务端session中,同时保存到客户端中,客户端发送请求时,把token带到HTTP请求头或参数中,服务端接收到请求,验证请求中的token与session中的是否一致;

三、HTTP劫持

大多数情况是运营商HTTP劫持,当我们使用HTTP请求请求一个网站页面的时候,网络运营商会在正常的数据流中插入精心设计的网络数据报文,让客户端(通常是浏览器)展示“错误”的数据,通常是一些弹窗,宣传性广告或者直接显示某网站的内容。

四、DNS劫持

通过劫持 DNS 服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的

五、控制台注入代码

六、同源策略

如果两个 URL 的协议、域名和端口都相同,我们就称这两个 URL 同源。

解决同源策略的方法:

  • 跨域资源共享(CORS): 跨域资源在服务端设置允许跨域,就可以进行跨域访问控制,从而使跨域数据传输得以安全进行。
  • 跨文档消息机制: 可以通过 window.postMessage 的 JavaScript 接口来和不同源的 DOM 进行通信。
  • 内容安全策略(CSP):主要以白名单的形式配置可信任的内容来源,在网页中,能够使白名单中的内容正常执行(包含 JS,CSS,Image 等等),而非白名单的内容无法正常执行。