← 返回目录

页面白屏

第 117 / 154 卷日期:

页面白屏

网络请求,返回状态

组件样式布局,组价未显示

网页卡顿原因

  1. 网络请求是否过多,导致数据传输变慢,可通过缓存优化
  2. 资源bundle太大,考虑拆分
  3. 代码是否有太多循环在主线程上花费太长时间
  4. 浏览器某个帧中渲染太多东⻄
  5. 页面渲染时,大量回流和重绘
  6. 内存泄露

动画性能优化

  1. 合理布局
  2. transform代替left、top 减少重排
  3. 硬件加速
  4. 避免不必要的图形层
  5. requestAnimationFrame实现动画

动画每一帧都是re-render,显示器刷新频率 60 HZ,意味着每一帧任务耗时不超过 16ms

前端安全

XSS和CSRF攻击

XSS跨站脚本攻击

Cross Site Scripting 为了和 CSS 区别,CSS 指的是层叠样式表 (Cascading Style Sheets)

用户输入或使用其他方式向代码中注入其他JS,然后JS代码被执行。

  1. 可能是写一个死循环、获取cookie登录
  2. 监听用户行为
  3. 修改DOM伪造登录表单
  4. 页面生成浮窗广告

反射型

XSS代码通过URL注入。

因为恶意脚本通过作为网络请求的参数,经过服务器,然后反射到HTML文档中执行解析,服务器不会存储这些恶意脚本。

反射型 XSS 漏洞常见于通过 URL 传递参数的功能,如网站搜索、跳转等。

存储型

如论坛发帖、商品评论、用户私信等。

文档型

XSS攻击不会经过服务端,作为中间人的角色,数据传输过程劫持到网络数据包,然后修改里面的HTML文档。

劫持包括:

  1. WIFI路由劫持
  2. 本地恶意软件

DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。

防范:一个信念,两个利用

1.对输入转码过滤

2.利用CSP

浏览器内容安全策略,核心就是服务器决定浏览器加载哪些资源,功能:

  1. 限制其他域下的资源加载
  2. 禁止向其它域提交数据
  3. 提供上报机制

3.HttpOnly

HttpOnly类型的cookie阻止JS对其的访问(标记或授权对话)

阻止 XSS 攻击:服务器对脚本进行过滤或转码,利用 CSP 策略,使用 HttpOnly;

CSRF-跨站伪造请求(钓鱼)

Cross-Site Request Forgery

攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证(比如cookie),绕过后台的用户验证,因此可以冒充用户对被攻击的网站执行某项操作。

利用所在网站的目前登录信息,悄悄提交各种信息,比XSS更恶劣。

本质:利用cookie会在同源请求中携带发送给服务器的特点,以此冒充用户。

利用服务器的验证漏洞和用户之前的登录状态模拟用户操作。

点击链接后,可能发生3件事

  1. 自动发送GET请求。利用src发送请求
  2. 自动发送POST请求
  3. 诱导点击发送GET请求

防范

1.SameSite

  1. 在Lax模式,宽松一点,但是只能在 get 方法提交表单况或者a 标签发送 get 请求的情况下可以携带 Cookie,其

他情况均不能。

  1. 在None模式下,也就是默认模式,请求会自动携带上 Cookie。

2.验证来源站点

请求头中的origin和referer

origin只包含域名信息,referer包含具体的URL路径。

3.CSRF Roken

利用token(后端生成的一个唯一登陆态,传给前端保存)每次前端请求都会带token,后端检验通过才同意请求。

敏感操作需要确认敏感信息的cookie只能有较短的生命周期

4.安全框架

如Spring Security。

SQL注入攻击

Sql 注入攻击,将恶意的 Sql查询或添加语句插入到应用的输入参数中,再在后台 Sql服务器上解析执行。

如何让Web服务器执行攻击者的SQL语句?

SQL注入的常规操作就是将有毒的SQL语句放置于Form表单或请求参数之中,然后提交到后端服务器,如果后端服务器没有做输入安全检查,直接将变量取出执行SQL语句,就容易中招。

预防方式如下:

严格检查输入变量的类型和格式过滤和转义特殊字符

对访问数据库的Web应用程序采用Web应用防火墙

其他种类的攻击:

DDoS全称Distributed Denial of Service:分布式拒绝服务攻击。是拒绝服务攻击的升级版。拒绝攻击服务顾名思义,让服务不可用。常用于攻击对外提供服务的服务器,像常见的:

Web服务邮件服务

DNS服务即时通讯服务

DNS劫持

JSON劫持

暴力破解

全站分卷索引 · 154 卷
  1. 1代码随想录知识星球精华(最强八股文)第五版(前端篇))
  2. 2html语义化
  3. 3src 和 href 的区别
  4. 4link 与 @import 的区别
  5. 5iframe
  6. 6CSS
  7. 7伪元素和伪类
  8. 8block,inline,inline-block
  9. 9重排、重绘和合成
  10. 10盒子模型
  11. 11margin 合并
  12. 12margin和padding 的值为百分比时
  13. 13浮动
  14. 14定位
  15. 15CSS选择器
  16. 16CSS选择器优先级
  17. 17选择器权重Specificity
  18. 18CSS属性继承
  19. 19不可/可继承属性
  20. 20display: none与 visibility: hidden的区别
  21. 21background-size
  22. 22client、offset&scroll
  23. 23CSS3新特性
  24. 24flex布局
  25. 25常见布局
  26. 26三栏布局
  27. 27垂直居中
  28. 28水平垂直居中
  29. 29CSS画三角形
  30. 30使chrome支持12px以下文字
  31. 31响应式布局
  32. 32媒体查询
  33. 33过渡与动画
  34. 34JavaScript 动画 和 CSS动画
  35. 35SCSS
  36. 36CSS性能优化
  37. 37有哪些数据类型
  38. 38判断数据类型
  39. 39类型转换
  40. 40parseInt&parseFloat
  41. 41浮点数求和步骤
  42. 42十进制小数转二进制
  43. 430.1+0.2 为什么不等于 0.3
  44. 44undefined 和 undeclared 的区别
  45. 45JavaScript NaN 属性
  46. 46isFinite()&isNaN()
  47. 47数组
  48. 48对原数组有影响
  49. 49对原数组无影响
  50. 50数组去重
  51. 51数组拍平
  52. 52ES6新增的数组方法
  53. 53判断是否存在某个值
  54. 54arguments为啥不是数组
  55. 55对象
  56. 56遍历对象的方法
  57. 57判断对象是否具有属性
  58. 58for in 和 for of 的区别
  59. 59继承方式
  60. 60instanceof
  61. 61深浅拷贝
  62. 62freeze属性
  63. 63函数
  64. 64函数柯里化
  65. 65函数的 length
  66. 66箭头函数和普通函数区别
  67. 67构造函数
  68. 68执行上下文
  69. 69作用域
  70. 70作用域和作用域链
  71. 71闭包和内存泄漏
  72. 72this
  73. 73关于 this 的指向问题
  74. 74改变this指向的方法(bind / call / apply)
  75. 75字符串
  76. 76DOM和事件
  77. 77哪些事件支持冒泡
  78. 78阻止冒泡
  79. 79HTMLCollection、NodeList
  80. 80dom.onclick 和 dom.addEventListener的区别
  81. 81e.target和e.currentTarget
  82. 82页面生命周期
  83. 83异步
  84. 84内存管理GC
  85. 85其它
  86. 86JavaScript 中日期时间格式转换
  87. 87input和object实现双向绑定
  88. 88JSON.stringify()
  89. 89escape、encodeURI&encodeURIComponent
  90. 90移动端滚动穿透和溢出
  91. 91ES6
  92. 92Map字典
  93. 93... 与rest
  94. 94proxy
  95. 95模块化
  96. 96Ajax、Fetch和Axios
  97. 97Webpack
  98. 98浏览器:事件循环
  99. 99浏览器内核
  100. 100浏览器同源策略
  101. 101输入URL回车后发生了什么
  102. 102HTTP
  103. 103HTTP 2.0
  104. 104浏览器存储
  105. 105鉴权
  106. 106Webstorage
  107. 107浏览器执行机制
  108. 108AST 抽象语法树
  109. 109性能优化
  110. 110CSS
  111. 111网络相关
  112. 112使用HTTP2.0
  113. 113图片
  114. 114CDN图片
  115. 115其他文件优化
  116. 116降低APP首页开屏渲染时间
  117. 117页面白屏
  118. 118HTTPS中间人攻击
  119. 119Web Worker
  120. 120Service Worker
  121. 121微前端
  122. 122Vue
  123. 123v-show 和 v-if 的区别
  124. 124双向数据绑定的原理
  125. 125Vue中的插槽使用
  126. 126Vue中的key
  127. 127Vue过滤器
  128. 128Vue中Scoped原理
  129. 129Vue中$nextTick的使用
  130. 130Vue中实现组件通信的方式
  131. 131Vue-router
  132. 132Vue路由传参
  133. 133前端路由
  134. 134Vuex
  135. 135虚拟DOM
  136. 136DIFF 算法
  137. 137Vue3和Vue2有哪些区别
  138. 138说一说你对React的理解
  139. 139React事件机制
  140. 140说一说你对react refs的理解
  141. 141react中key的作用
  142. 142组件开发
  143. 143有状态组件和无状态组件
  144. 144函数式组件和类组件的区别
  145. 145PureComponent&Component
  146. 146常见 Hooks
  147. 147状态管理
  148. 148redux toolkit
  149. 149React18新特性
  150. 150client中的createRoot取代以前的ReactDOM.render
  151. 151Suspense
  152. 152新的Hooks
  153. 153VDom一定更快吗
  154. 154Fiber