当前位置: 首页 > news >正文

【前端面试】Http篇

1. HTTPS 概念

  • 加密(Encryption)
    • 防止数据被截获
  • 数据完整性(Data Integrity)
    • 防止数据篡改
  • 身份验证(Authentication)
    • 验证网站的真实性

2. HTTPS 与 HTTP 的区别

  • HTTP 是明文传输,HTTPS 是加密传输
  • HTTP 使用 80 端口,HTTPS 使用 443 端口
  • HTTPS 加密会导致传输稍慢

3. HTTPS 防止的安全威胁

  • 中间人攻击(MITM)
    • 加密避免数据被拦截和篡改
  • 窃听(Eavesdropping)
    • 通过加密防止数据被监听
  • 篡改(Data Tampering)
    • 确保数据在传输过程中不被篡改
  • 假冒网站(Phishing)
    • 证书验证防止访问假冒网站

4. 安全相关话题

  • 前端数据加密
    • 使用 Web Crypto API 加密用户数据
  • XSS(跨站脚本攻击)
    • 输入验证
    • HTML 转义
    • Content Security Policy (CSP)
  • CSRF(跨站请求伪造)
    • 同源策略(Same-Origin Policy)
    • CSRF Token
  • HTTP 安全头(HTTP Headers)
    • Strict-Transport-Security (HSTS)
    • X-Content-Type-Options
    • X-Frame-Options
    • Content-Security-Policy (CSP)
  • 身份验证与授权
    • OAuth
    • JWT(JSON Web Token)

5. 安全存储和传输

  • 密码存储
    • 哈希(bcrypt)
  • 数据加密存储
    • 对称加密和非对称加密

6. HTTP 版本区别(1.0, 2.0, 3.0)

  • HTTP 1.0
    • 请求/响应模型:每个请求都需要建立一个连接
    • 没有管道化和多路复用
    • 缺乏性能优化
  • HTTP 2.0
    • 引入了多路复用,可以在一个连接上同时处理多个请求
    • 数据帧和流的概念,提高了性能
    • 压缩请求和响应头,减少延迟
  • HTTP 3.0
    • 基于 QUIC 协议(UDP),进一步减少延迟
    • 解决了 HTTP 2.0 在高延迟和丢包情况下的性能问题
    • 更好的安全性,内置 TLS 1.3

7. 强缓存与弱缓存

  • 强缓存
    • 浏览器会直接使用缓存的内容,不发请求到服务器
    • 基于 Cache-ControlExpires 头部控制
    • 例如:Cache-Control: max-age=3600
  • 弱缓存
    • 浏览器会先发请求到服务器,检查资源是否变化,如果没有变化则使用缓存
    • 基于 ETagLast-Modified 头部控制
    • 例如:If-None-Match: "etag-value"

8. 相关面试问题及答案

Q1: HTTPS 和 HTTP 的区别是什么?

  • HTTP 是明文传输,HTTPS 在 HTTP 上加入了 SSL/TLS 加密协议,确保数据传输的机密性、完整性和身份验证。HTTPS 使用 443 端口,而 HTTP 使用 80 端口。

Q2: HTTPS 如何防止中间人攻击?

  • HTTPS 使用 SSL/TLS 加密传输,防止了第三方拦截、篡改数据。在通信过程中,双方会验证彼此的身份(通过证书),并通过加密保护数据内容。

Q3: 如何防止 XSS 和 CSRF 攻击?

  • XSS:输入验证、HTML 转义、使用 Content Security Policy (CSP) 防止恶意脚本注入。
  • CSRF:使用 CSRF Token、双重提交 Cookie 或者通过 SameSite 属性限制跨站请求。

Q4: 如何配置浏览器安全性头部?

  • Strict-Transport-Security (HSTS):要求浏览器仅通过 HTTPS 连接。
  • X-Content-Type-Options:防止浏览器根据内容推测 MIME 类型。
  • X-Frame-Options:防止网页被嵌入在 iframe 中,减少点击劫持攻击。
  • Content-Security-Policy (CSP):限制浏览器加载的内容类型,防止 XSS 攻击。

Q5: 前端如何保护用户的敏感信息?

  • 使用 HTTPS 加密传输数据。
  • 在客户端存储时对敏感数据进行加密。
  • 使用 HTTP Only 和 Secure 属性来保护 Cookie。
  • 定期更新和管理认证 token,使用 JWT 进行身份验证。

Q6: HTTP 1.0 和 HTTP 2.0 有哪些主要区别?

  • HTTP 1.0 使用每个请求一个连接,而 HTTP 2.0 引入了多路复用技术,允许在一个连接上同时发送多个请求和响应,从而减少延迟和提高性能。

Q7: 什么是强缓存和弱缓存,如何配置?

  • 强缓存:在资源有效期内,浏览器不会向服务器发送请求,直接使用缓存。
    • 配置:Cache-Control: max-age=3600
  • 弱缓存:浏览器会检查缓存是否过期,如果过期则向服务器请求新的资源。
    • 配置:ETagLast-Modified

Q8: 如何避免 CSRF 攻击?

  • 使用 CSRF Token:为每个请求生成唯一的 Token,服务器验证 Token 来确保请求来自合法的用户。
  • 使用 SameSite Cookie 属性:限制第三方网站发送跨站请求。
http://www.lryc.cn/news/501460.html

相关文章:

  • ZZCMS2023存在跨站脚本漏洞(CNVD-2024-44822、CVE-2024-44818)
  • Android 15 前台服务类型的变更
  • 微信小程序开发简易教程
  • 树莓派 发那科 Fanuc Linux跨平台CNC数控数据采集协议,TCP协议包
  • Ubuntu中安装配置交叉编译工具并进行测试
  • C++核心day3作业
  • socket UDP 环路回显的服务端
  • springboot/ssm车辆违章信息管理系统Java代码web项目汽车违章处罚源码
  • 5G模组AT命令脚本-关闭模组的IP过滤功能
  • STM32:实现ping命令(lwip)
  • nvm安装指定版本显示不存在及nvm ls-remote 列表只出现 iojs 而没有 node.js 解决办法
  • Spring Boot 中 WebClient 的实践详解
  • 在GITHUB上传本地文件指南(详细图文版)
  • 【大模型系列篇】LLaMA-Factory大模型微调实践 - 从零开始
  • 30天学会Go--第7天 GO语言 Redis 学习与实践
  • java 使用JSqlParser和CCJSqlParser 解析sql
  • 基于spring boot的高校专业实习管理系统的设计与实现
  • OpenCV相机标定与3D重建(11)机器人世界手眼标定函数calibrateRobotWorldHandEye()的使用
  • 计算机网络ENSP课设--三层架构企业网络
  • 【openwrt】openwrt-21.02 基于IP地址使用ipset实现策略路由操作说明
  • Git:常用命令
  • 【2025最新版】搭建个人博客教程
  • 微信小程序实现联动删除输入验证码框
  • 数据库中decimal、float 和 double区别
  • 网络编程01
  • el-dialog修改其样式不生效加deep也没用
  • 三天精通一算法之快速排序
  • 互联网、物联网的相关标准
  • Linux题库及答案
  • Android 镜像模式和扩展模式区别探讨-Android14