网络安全
前端网络安全是Web开发中非常重要的一部分,确保应用程序的安全性可以防止各种攻击,保护用户数据和隐私。以下是一些常见的前端攻击类型及其防御措施:
常见的前端攻击类型
跨站脚本攻击(XSS)
描述:攻击者在网页中注入恶意脚本,当用户访问该网页时,脚本会在用户的浏览器中执行,窃取用户数据或执行其他恶意操作。
防御措施
:
- 输入验证和输出编码:对用户输入进行严格验证,并对输出进行编码,防止恶意脚本注入。
- 使用安全的库和框架:使用经过安全审计的库和框架,如React、Angular等,它们内置了防御XSS的机制。
- 内容安全策略(CSP):配置CSP头,限制页面可以加载的资源,防止恶意脚本执行。
跨站请求伪造(CSRF)
描述:攻击者诱导用户在已登录的情况下访问恶意网站,利用用户的身份执行未授权的操作。
防御措施
:
- CSRF令牌:在表单提交或AJAX请求中加入CSRF令牌,服务器验证令牌的有效性。
- SameSite Cookie属性:设置Cookie的SameSite属性为Strict或Lax,限制跨站请求携带Cookie。
- 双重提交Cookie:在请求中同时提交Cookie和表单字段,服务器验证两者是否一致。
点击劫持(Clickjacking)
描述:攻击者在透明的iframe中嵌入目标网站,诱导用户点击,执行未授权的操作。
防御措施
:
- X-Frame-Options:设置HTTP头X-Frame-Options为DENY或SAMEORIGIN,防止页面被嵌入iframe。
- **Content Security Policy (CSP)**:配置CSP头,使用frame-ancestors指令限制页面可以被嵌入的来源。
SQL注入
描述:攻击者通过输入恶意SQL语句,操纵数据库查询,窃取或篡改数据。
防御措施
:
- 参数化查询:使用参数化查询或预编译语句,防止SQL注入。
- 输入验证:对用户输入进行严格验证,过滤特殊字符。
本地存储攻击
描述:攻击者通过XSS或其他手段获取本地存储中的敏感数据。
防御措施
:
- 敏感数据加密:对存储在本地存储中的敏感数据进行加密。
- 减少本地存储使用:尽量减少在本地存储中保存敏感数据,使用更安全的存储方式。
分片上传控件
WebWorker Hook
代码示例
1 | export default class WorkerWrapper { |
Untils工具合集
Vue vs React:全面对比与技术选型指南
前言
迎的两大框架。无论是企业级应用,还是个人项目,开发者常常面临“Vue 和 React 该选哪个?”的问题。本文将从设计理念、响应式原理、虚拟 DOM、生态体系、性能、学习曲线等多个维度深入剖析两者的异同,帮助开发者做出更合适的技术选型。
一、设计理念对比
特性 | Vue | React |
---|---|---|
定位 | 渐进式框架 | UI 库 |
编程范式 | 选项式(Option API) + 组合式(Composition API) | 函数式 |
架构设计 | 内聚(内建路由、状态管理) | 解耦(核心只管视图,其他靠社区) |
模板语言 | 模板 + JS | JSX(JS + XML) |
Vue 更强调易用性和渐进增强,适合快速开发;React 更强调灵活性和函数式编程,更适合复杂业务需求。
浏览器渲染原理
1、JS的异步
js是单线程的语言,它运行在浏览器的渲染主线程中,而渲染主线程只有一个。
渲染主线程承担着诸多工作,例如解析、渲染页面、执行js都在其中,如果使用同步会极有可能产生阻塞,从而导致消息队列中许多其他任务无法得到执行,造成1主线程白白的消耗时间 2页面无法及时更新,产生页面卡死现象。
所以浏览器采用异步的方式来解决,具体做法是(事件循环)当某些任务发生时,例如计时器、网络、事件监听,主线程将其交给其他线程处理,自身继续执行后续代码,当其他线程结束后,将事先传递的回调函数包装成任务加入到消息队列末尾,等待主线程的调度执行。
在这种异步模式下,浏览器永不阻塞,最大限度的保证了单线程的流畅运行。
threeJs
物理引擎cannon-es https://pmndrs.github.io/cannon-es/docs/
vue2 Vs Vue3
本文将全面对比 Vue 2 和 Vue 3,从语法、性能、架构、开发体验等多个维度,带你了解两者之间的核心区别。
性能提升
模板编译器优化
- Vue 2:模板编译结果中包含了较多的运行时代码,运行时成本较高。
- Vue 3:通过静态提升(Static Hoisting)和静态节点标记(Patch Flag)优化了虚拟 DOM 的 patch 过程,减少了运行时的开销。
diff算法优化
- Vue 2:在比较新旧虚拟DOM树时,采用的是深度优先遍历,逐层比较节点,这种方式在处理大量节点时可能会有性能问题。
- Vue 3:进行了优化,它会根据节点的类型和属性进行更高效的比较,减少不必要的更新。
- 静态提升:Vue 3会将静态节点提升到编译阶段,避免在每次渲染时重新创建这些节点。
- 缓存优化:Vue 3会缓存一些计算结果,避免重复计算。
- 块级优化:Vue 3会将模板分成多个块,每个块只包含动态内容,静态内容会被提升到块外部。这使得块内的比较更加高效。
Tree-shaking 支持
- Vue 2:整体打包,无法按需引入。
- Vue 3:基于 ES Module 架构,支持 Tree-shaking,减小打包体积。
更小更快
- Vue 3 的体积比 Vue 2 更小,且在大多数性能测试中表现更好。
El-table跨行列设计
前言
使用el-table做跨行跨列表格渲染,接口数据格式为对象数组,即需从对象中提取columns,且需要设置对应的跨行跨列关系。为此要实现一种更优雅的构造方法,即配置化跨行跨列动态渲染。
基于element-ui v2.4.11版本,实现对于该版本表格组件,跨行跨列的构造方法可以通过arraySpanMethod构造,由于笔者使用的是vue2写法,vue3雷同使用。
传送门:https://element.eleme.cn/2.4/#/zh-CN/component/table
1 | methods: { |