17.CSRF攻击18.XSS攻击19.网络性能优化

92 阅读3分钟

CSRF攻击

CSRF(Cross-site request forgery,跨站请求伪造)

它是指攻击者利用了用户的身份信息,执行了用户非本意的操作

防御方式

防御手段防御力问题
不使用cookie⭐️⭐️⭐️⭐️⭐️兼容性略差 ssr会遇到困难,但可解决
使用sameSite⭐️⭐️⭐️⭐️兼容性差 容易挡住自己人
使用csrf token⭐️⭐️⭐️⭐️⭐️获取到token后未进行操作仍然会被攻击
使用referer防护⭐️⭐️过去很常用,现在已经发现漏洞

面试题

介绍 csrf 攻击

CSRF 是跨站请求伪造,是一种挟制用户在当前已登录的Web应用上执行非本意的操作的攻击方法

它首先引导用户访问一个危险网站,当用户访问网站后,网站会发送请求到被攻击的站点(银行转账等),这次请求会携带用户的cookie发送,因此就利用了用户的身份信息完成攻击

防御 CSRF 攻击有多种手段:

  1. 不使用cookie
  2. 为表单添加校验的 token 校验
  3. cookie中使用sameSite字段
  4. 服务器检查 referer 字段

XSS攻击

XSS(Cross Site Scripting,跨站脚本攻击),是指攻击者利用站点的漏洞,在表单提交时,在表单内容中加入一些恶意脚本,当其他正常用户浏览页面,而页面中刚好出现攻击者的恶意脚本时,脚本被执行,从而使得页面遭到破坏,或者用户信息被窃取。

防御方式

服务器端对用户提交的内容进行过滤或编码

  • 过滤:去掉一些危险的标签,去掉一些危险的属性
  • 编码:对危险的标签进行HTML实体编码

面试题

介绍 XSS 攻击

参考答案:

XSS 是指跨站脚本攻击。攻击者利用站点的漏洞,在表单提交时,在表单内容中加入一些恶意脚本,当其他正常用户浏览页面,而页面中刚好出现攻击者的恶意脚本时,脚本被执行,从而使得页面遭到破坏,或者用户信息被窃取。

要防范 XSS 攻击,需要在服务器端过滤脚本代码,将一些危险的元素和属性去掉或对元素进行HTML实体编码。

列举优化网络性能方法

参考答案:

  • 优化打包体积

    利用一些工具压缩、混淆最终打包代码,减少包体积

  • 多目标打包

    利用一些打包插件,针对不同的浏览器打包出不同的兼容性版本,这样一来,每个版本中的兼容性代码就会大大减少,从而减少包体积

  • 压缩

    现代浏览器普遍支持压缩格式,因此服务端的各种文件可以压缩后再响应给客户端,只要解压时间小于优化的传输时间,压缩就是可行的

  • CDN

    利用 CDN 可以大幅缩减静态资源的访问时间,特别是对于公共库的访问,可以使用知名的 CDN 资源,这样可以实现跨越站点的缓存

  • 缓存

    对于除 HTML 外的所有静态资源均可以开启协商缓存,利用构建工具打包产生的文件 hash 值来置换缓存

  • http2

    开启 http2 后,利用其多路复用、头部压缩等特点,充分利用带宽传递大量的文件数据

  • 雪碧图

    对于不使用 HTTP2 的场景,可以将多个图片合并为雪碧图,以达到减少文件的目的

  • defer、async

    通过 defer 和 async 属性,可以让页面尽早加载 js 文件

  • prefetch、preload

    通过 prefetch 属性,可以让页面在空闲时预先下载其他页面可能要用到的资源

    通过 preload 属性,可以让页面预先下载本页面可能要用到的资源

  • 多个静态资源域

    对于不使用 HTTP2 的场景,将相对独立的静态资源分到多个域中保存,可以让浏览器同时开启多个 TCP 连接,并行下载