Vue 面试题
1.Vue 双向绑定原理
2.描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?
3.你是如何理解 Vue 的响应式系统的?
4.虚拟 DOM 实现原理
5.既然 Vue 通过数据劫持可以精准探测数据变化,为什么还需要虚拟 DOM 进行 diff 检测差异?
6.Vue 中 key 值的作用?
7.Vue 的生命周期
8.Vue 组件间通信有哪些方式?
9.watch、methods 和 computed 的区别?
10.vue 中怎么重置 data?
11.组件中写 name 选项有什么作用?
12.vue-router 有哪些钩子函数?
13.route 和 router 的区别是什么?
14.说一下 Vue 和 React 的认识,做一个简单的对比
15.Vue 的 nextTick 的原理是什么?
16.Vuex 有哪几种属性?
17.vue 首屏加载优化
18.Vue 3.0 有没有过了解?
19.vue-cli 替我们做了哪些工作?
…
算法
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
- 冒泡排序
- 选择排序
- 快速排序
- 二叉树查找: 最大值、最小值、固定值
- 二叉树遍历
- 二叉树的最大深度
- 给予链表中的任一节点,把它删除掉
- 链表倒叙
- 如何判断一个单链表有环
- 给定一个有序数组,找出两个数相加为一个目标数
…
由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+评论666
- JavaScript Mimicry XSS(JSM-XSS):攻击者不是注⼊恶意脚本,⽽是利⽤ Web 应⽤程序中已经使⽤的脚本来发起 JSM-XSS 攻击。JSM-XSS 攻击很难被检测到并且很容易通过基于⽩名单的过滤器。
- XSS 蠕⾍(WXSS):WXSS 攻击是具有⾃我复制能⼒的 XSS 攻击。RXSS 和 SXSS 攻击被归类为 WXSS。WXSS 攻击更加危险,因为它们在 Web 应⽤程序⽤⼾之间传播,并随着时间的推移逐渐感染其他⽤⼾。此类攻击的典型⽬标是在线社交⽹络应⽤程序。
三、CSP介绍
Content Security Policy
(CSP
) 是一种加固 Web 应用的安全性技术,通过在网站页面中设置 CSP Header 来限制页面中能够执行的脚本、样式、图片等资源。CSP 包括很多不同的策略,因此安全设置的具体值取决目标网站的需求和资源使用情况。一般而言,建议设置较为严格的 CSP,以避免 XSS
、CSRF
等安全问题。例如,可以配置以下 CSP:
Content-Security-Policy: default-src 'self'; script-src 'self' https://example.com; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self' https://example.com;
以上设置的 CSP 规则禁止所有来自第三方网站的资源,只允许本网站的资源加载。其中 script-src
只允许本网站和 example.com 的脚本加载,img-src
只允许本网站和 data: URI 的图片加载,style-src
只允许本网站和内联样式加载,font-src
只允许本网站和 example.com 的字体加载。请根据实际情况进行调整。
CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。
CSP 大大增强了网页的安全性。攻击者即使发现了漏洞,也没法注入脚本,除非还控制了一台列入了白名单的可信主机。
两种方法可以启用 CSP
:
- 设置 HTTP 的
Content-Security-Policy
头部字段; - 设置网页的
<meta>
标签。
3.1 使用HTTP的 Content-Security-Policy头部
在服务器端使用 HTTP的 Content-Security-Policy
响应头部来指定安全策略。
Content-Security-Policy: policy
: policy
参数是一个包含了各种描述CSP
策略指令的字符串。
示例1:
// index.js
const http = require('http');
const fs = require('fs');
http.createServer((req, res) => {
const html = fs.readFileSync('index.html', 'utf8');
res.writeHead(200, {
'Content-Type': 'text-html',
'Content-Security-Policy': 'default-src http: https:'
});
res.end(html);
}).listen(9000);
console.log('server listening on 9000');
以上代码使用原生nodejs起了个服务,然后设置响应头部'Content-Security-Policy': 'default-src http: https:'
表示只能通过外联的方式来引用js
和css
,如果使用内联的将报错:
示例2
只能在指定的域下加载文件,这里表示只能从同域下加载,斜杠为转义符:'Content-Security-Policy': 'default-src \'self\''
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
打开控制台也可以看到请求在浏览器就已经被限制了:
如果要允许请求到这个域,添加进策略即可:
'Content-Security-Policy': 'default-src \'self\' https://cdn.bootcss.com/'
示例3
上面的策略是无法限制form表单的提交的,如下列表单,点击后直接跳到了百度页面:
<form action="https://baidu.com">
<button>click me</button>
</form>
这时候就要设置form-action策略:
'Content-Security-Policy': 'default-src \'self\' https://cdn.bootcss.com/; form-action \'self\''
其中,default-src
设置的是全局,如果只想限制js
的请求,可以将default-src
改为script-src
。
启用违例报告
默认情况下,违规报告并不会发送。为启用发送违规报告,需要指定 report-uri
策略指令,并提供至少一个URI地址去递交报告:
'Content-Security-Policy': 'script-src \'self\'; report-uri /report'
这里的报告我们可以直接在浏览器看到,它会自动发送一个请求出去:
如果只想收集报告,但是不真正的去限制请求,那怎么办?除了Content-Security-Policy
,还有一个Content-Security-Policy-Report-Only
字段,表示不执行限制选项,只是记录违反限制的行为。将头部改为这个即可。
如果 Content-Security-Policy-Report-Only
标头和 Content-Security-Policy
同时出现在一个响应中,两个策略均有效。在 Content-Security-Policy
标头中指定的策略有强制性,而 Content-Security-Policy-Report-Only
中的策略仅产生报告而不具有强制性。
3.2 使用 meta 标签
以上规则可以在浏览器端设置,如:
<meta http-equiv="Content-Security-Policy" content="form-action 'self';">
但与服务器端设置有点不同的是,meta
无法使用report
,只能在服务器端设置:
四、CSP 实施策略
限制方式
default-src
: 限制全局,默认所有都会使用这种规则。script-src
: 限制JavaScript
的源地址。style-src
:限制层叠样式表文件源。img-src
:限制图片和图标的源地址。font-src
:定义了字体加载的有效来源。connect-src
:定义了请求、XMLHttpRequest
、WebSocket
和EventSource
的连接来源child-src
: 指定定义了 web workers 以及嵌套的浏览上下文(如<frame>
和<iframe>
)的源。media-src
:限制通过<audio>
、<video>
或<track>
标签加载的媒体文件的源地址。object-src
:限制<object>
或<embed>
标签的源地址。manifest-src
:限制应用声明文件的源地址。prefetch-src
:指定预加载或预渲染的允许源地址。worker-src
:限制Worker
、SharedWorker
或ServiceWorker
脚本源。webrtc-src
:指定WebRTC
连接的合法源地址。
注⚠️: 被 object-src
控制的元素可能碰巧被当作遗留 HTML 元素,导致不支持新标准中的功能(例如 <iframe>
中的安全属性 sandbox
和 allow
)。因此建议限制该指令的使用(比如,如果可行,将 object-src
显式设置为 ‘none
’)。
限制规则
self
: 只允许同源下的资源。unsafe-inline
:允许使用内联资源,如内联的<script>
元素、javascript: URL
、内联的事件处理函数和内联的<style>
元素。unsafe-eval
:允许使用eval()
等通过字符串创建代码的方法。
注⚠️:设置多个限制条件,后面的会覆盖前面的!
一个CSP头由多组CSP策略组成,中间由分号分隔。其中每一组策略包含一个策略指令和一个内容源列表。例如:
Content-Security-Policy: default-src 'self' www.baidu.com; script-src 'unsafe-inline'
什么是同源策略?
Vue 面试题
1.Vue 双向绑定原理
2.描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?
3.你是如何理解 Vue 的响应式系统的?
4.虚拟 DOM 实现原理
5.既然 Vue 通过数据劫持可以精准探测数据变化,为什么还需要虚拟 DOM 进行 diff 检测差异?
6.Vue 中 key 值的作用?
7.Vue 的生命周期
8.Vue 组件间通信有哪些方式?
9.watch、methods 和 computed 的区别?
10.vue 中怎么重置 data?
11.组件中写 name 选项有什么作用?
12.vue-router 有哪些钩子函数?
13.route 和 router 的区别是什么?
14.说一下 Vue 和 React 的认识,做一个简单的对比
15.Vue 的 nextTick 的原理是什么?
16.Vuex 有哪几种属性?
17.vue 首屏加载优化
18.Vue 3.0 有没有过了解?
19.vue-cli 替我们做了哪些工作?
…
算法
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
- 冒泡排序
- 选择排序
- 快速排序
- 二叉树查找: 最大值、最小值、固定值
- 二叉树遍历
- 二叉树的最大深度
- 给予链表中的任一节点,把它删除掉
- 链表倒叙
- 如何判断一个单链表有环
- 给定一个有序数组,找出两个数相加为一个目标数
…
由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+评论666
排序
4. 二叉树查找: 最大值、最小值、固定值
5. 二叉树遍历
6. 二叉树的最大深度
7. 给予链表中的任一节点,把它删除掉
8. 链表倒叙
9. 如何判断一个单链表有环
10. 给定一个有序数组,找出两个数相加为一个目标数
…
[外链图片转存中…(img-sob2v2Zg-1715840161427)]
由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+评论666