前端面试的游览器部分(3)每篇10题

1.token的概念与使用

Token(令牌)是在网络通信中用于身份验证和授权的一种方式。它是一串字符串,通常由服务器生成,并在用户登录后返回给客户端。客户端在后续的请求中将 Token 作为身份凭证发送给服务器,以证明自己的身份和权限。

Token 的使用可以带来以下优势:

  1. 无状态性:Token 是无状态的,服务器不需要在后端存储用户的登录信息,减轻了服务器的负担。

  2. 安全性:Token 通常使用密钥进行签名,确保了数据的完整性和安全性。客户端不能篡改 Token,因为篡改后签名会失效。

  3. 跨平台:Token 可以在不同的平台上使用,包括Web、移动设备等。

  4. 自定义权限:Token 可以携带用户的权限信息,服务器可以根据 Token 中的权限信息来判断用户是否有权访问某些资源。

  5. 可扩展性:Token 的生成和验证可以由第三方身份验证服务来处理,使得系统具有良好的扩展性和灵活性。

常见的 Token 类型包括:

  1. JWT(JSON Web Token):JWT 是一种开放标准(RFC 7519),基于 JSON 格式来定义 Token 格式。它包含了一组声明,用于描述用户信息和权限。JWT 通常被用于前后端分离的应用程序。

  2. OAuth Token:OAuth 是一种用于授权的开放标准,它通过令牌来实现授权。OAuth Token 用于授权第三方应用程序访问用户资源,实现第三方登录和授权功能。

  3. Bearer Token:Bearer Token 是一种简单的 Token 类型,它通常作为 Authorization 头部的一部分发送给服务器,用于验证用户的身份和权限。

在使用 Token 的过程中需要注意以下安全性问题:

  1. Token 过期:Token 应该有一个合理的过期时间,过期后需要重新获取 Token。

  2. Token 存储:客户端需要妥善存储 Token,避免泄露给未授权的第三方应用程序。

  3. Token 安全传输:Token 在传输过程中应该使用安全的加密方式,避免被中间人窃取。

  4. Token 验证:服务器需要验证 Token 的有效性,确保 Token 是合法的。

总体而言,Token 是一种安全、高效的身份验证和授权方式,广泛应用于现代的Web应用程序和移动应用程序中。

2. SQL注入的概念以及防御

SQL注入是一种常见的安全漏洞,它发生在使用动态SQL语句的应用程序中。攻击者通过在用户输入的数据中插入恶意的SQL代码,从而使应用程序执行非预期的数据库操作,可能导致数据泄露、数据损坏或者非法访问数据库。

SQL注入的原理是由于应用程序在构建SQL查询时没有对用户输入的数据进行充分的验证和过滤,导致恶意的SQL代码被拼接到查询中。攻击者可以通过不同的手段构造恶意输入,比如输入一个SQL片段,绕过用户身份验证,执行恶意查询等。

为了防止SQL注入攻击,需要采取以下一些防御措施:

  1. 使用参数化查询:参数化查询是将用户输入的数据作为参数传递给SQL查询,而不是直接将输入拼接到查询中。这样可以避免SQL注入攻击,因为数据库会将参数和查询内容分开处理,不会将输入视为SQL代码执行。

  2. 输入验证和过滤:对用户输入的数据进行验证和过滤,确保只接受合法的输入。可以使用白名单机制,只允许特定的字符和格式。

  3. 最小权限原则:在数据库的用户权限上,确保应用程序只拥有执行必要操作的最小权限,限制了对数据库的访问范围。

  4. 错误处理:不要将数据库的错误信息直接返回给用户,可以对错误信息进行处理,只返回简洁的错误信息。

  5. 使用ORM框架:使用ORM(对象关系映射)框架可以帮助自动执行参数化查询,避免手动拼接SQL字符串。

  6. 安全编码实践:开发人员应该遵循安全编码实践,不信任任何用户输入,严格验证和处理用户输入的数据。

  7. 定期更新和维护:及时更新和维护应用程序和数据库,确保已知的漏洞被修复。

通过以上防御措施,可以大大减少SQL注入攻击的风险,保护应用程序和数据库的安全性。

3.从输⼊ URL到⻚⾯加载发⽣了什么?

从输入URL到页面加载经历了以下主要步骤:

  1. DNS解析:浏览器首先会对输入的URL进行DNS解析,将域名转换为IP地址。如果DNS缓存中有相应的记录,则直接使用缓存,否则将向DNS服务器发送请求进行解析。

  2. TCP连接:浏览器与服务器建立TCP连接。TCP是一种可靠的传输协议,确保数据的完整性和可靠性。

  3. 发起HTTP请求:浏览器向服务器发送HTTP请求。根据URL中的协议、域名、端口、路径等信息,构建HTTP请求报文,并发送给服务器。

  4. 服务器处理请求:服务器接收到HTTP请求后,根据请求的内容和路径,处理请求,生成相应的HTTP响应。

  5. 接收HTTP响应:浏览器接收到服务器返回的HTTP响应,包括状态码、响应头和响应体。

  6. 解析HTML并构建DOM树:浏览器解析HTML响应,并构建DOM树。DOM树表示了HTML文档的层次结构,包括标签、元素和属性等信息。

  7. 构建CSSOM树:浏览器解析CSS响应,构建CSSOM树。CSSOM树表示了CSS样式表的层次结构,包括样式规则和样式属性等信息。

  8. 合并DOM树和CSSOM树,生成渲染树:浏览器将DOM树和CSSOM树合并,生成渲染树。渲染树只包含需要显示在页面上的元素和样式信息。

  9. 布局(Layout):根据渲染树,浏览器进行布局,确定每个元素在页面上的位置和大小。

  10. 绘制(Painting):根据布局结果,浏览器进行绘制,将页面内容绘制到屏幕上。

  11. 加载其他资源:页面中可能包含其他资源,如图片、样式表、脚本等,浏览器会根据需要加载这些资源。

  12. 执行JavaScript:如果页面中包含JavaScript代码,浏览器会执行这些代码,可能会对DOM树进行修改或触发其他请求。

  13. 页面加载完成:当所有资源加载完成,页面渲染完成后,页面加载过程结束,用户可以正常访问和交互页面。

整个过程中,涉及到多个步骤的并行处理,以提高页面加载的效率和速度。

4.什么情况下会产生跨域,其实现原理?

跨域(Cross-Origin)指的是在浏览器中,当一个网页的源(域名、协议或端口)与正在访问的资源的源不一致时,就产生了跨域问题。浏览器出于安全考虑,限制了不同源之间的交互,以防止恶意网站获取用户的敏感信息或进行攻击。

产生跨域的常见情况有以下几种:

  1. 不同域名:比如一个网页在www.example.com中访问了api.example.com中的资源。

  2. 不同子域名:比如一个网页在sub1.example.com中访问了sub2.example.com中的资源。

  3. 不同协议:比如一个网页在https://www.example.com中访问了http://www.example.com中的资源。

  4. 不同端口:比如一个网页在www.example.com:8080中访问了www.example.com:3000中的资源。

实现跨域的原理主要是浏览器的同源策略(Same-Origin Policy):

  1. 协议、域名、端口必须一致:浏览器限制了只有当两个页面的协议、域名和端口都相同才属于同源。

  2. 非同源限制:当两个页面不属于同源时,浏览器会限制页面之间的访问,包括Cookie、LocalStorage、IndexedDB等数据的读取,以及DOM操作的限制。

5.跨域怎么解决

跨域问题可以通过以下几种方式进行解决:

  1. CORS(跨域资源共享):CORS是一种标准的跨域解决方案。服务器端设置相应的响应头,允许指定的域名进行跨域访问。在服务器端设置Access-Control-Allow-Origin头来指定允许访问的域名。CORS支持各种HTTP请求,并且更加安全可靠。

  2. JSONP:JSONP是一种利用

你可能感兴趣的:(前端面试的游览器部分,前端,面试,职场和发展,游览器)