【前端面试】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-Control 和 Expires 头部控制
- 例如:
Cache-Control: max-age=3600
- 弱缓存
- 浏览器会先发请求到服务器,检查资源是否变化,如果没有变化则使用缓存
- 基于 ETag 或 Last-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
- 配置:
- 弱缓存:浏览器会检查缓存是否过期,如果过期则向服务器请求新的资源。
- 配置:
ETag或Last-Modified
- 配置:
Q8: 如何避免 CSRF 攻击?
- 使用 CSRF Token:为每个请求生成唯一的 Token,服务器验证 Token 来确保请求来自合法的用户。
- 使用 SameSite Cookie 属性:限制第三方网站发送跨站请求。
相关文章:
【前端面试】Http篇
1. HTTPS 概念 加密(Encryption) 防止数据被截获 数据完整性(Data Integrity) 防止数据篡改 身份验证(Authentication) 验证网站的真实性 2. HTTPS 与 HTTP 的区别 HTTP 是明文传输,HTTPS 是…...
ZZCMS2023存在跨站脚本漏洞(CNVD-2024-44822、CVE-2024-44818)
ZZCMS是一款用于搭建招商网站的CMS系统,由PHP语言开发,可快速搭建:医药招商、保健品招商、化妆品招商、农资招商、孕婴童招商、酒类副食类等招商网站。 国家信息安全漏洞共享平台于2024-11-14公布其存在跨站脚本漏洞。 漏洞编号:…...
Android 15 前台服务类型的变更
在 Android 15 中对前台服务类型做出以下更改。 仍在处理中的媒体内容 要在其清单中声明的前台服务类型 android:foregroundServiceType mediaProcessing在清单中声明的权限 FOREGROUND_SERVICE_MEDIA_PROCESSING要传递给 startForeground() 的常量 FOREGROUND_SERVICE_TYPE_ME…...
微信小程序开发简易教程
微信小程序文件结构详解 1. 项目配置文件 project.config.json 项目的配置文件包含项目名称、appid、编译选项等配置示例: {"description": "项目配置文件","packOptions": {"ignore": []},"setting": {&quo…...
树莓派 发那科 Fanuc Linux跨平台CNC数控数据采集协议,TCP协议包
市面上的数控基本都支持了跨平台通讯,下面以发那科为列讲解跨平台协议如何通讯,无需任何DLL,适配任何开发语言,纯Socket通讯 先上采集图 握手包:a0 a0 a0 a0 00 01 01 01 00 02 00 02 释放包:a0 a0 a0 a…...
Ubuntu中安装配置交叉编译工具并进行测试
01-下载获取交叉编译工具的源码 按照博文 https://blog.csdn.net/wenhao_ir/article/details/144325141的方法,把imx6ull的BSP下载好后,其中就有交叉编译工具。 当然,为了将来使用方便,我已经把它压缩并传到了百度网盘ÿ…...
C++核心day3作业
作业: 1.整理思维导图 2.整理课上代码 3.把课上类的三个练习题的构造函数写出来 函数全部类内声明,类外定义 定义一个矩形类Rec,包含私有属性length、width,包含公有成员方法: void set_length(int l); //设置长度v…...
socket UDP 环路回显的服务端
基于socket通讯的方式,无论用http或者udp或者自定义的协议,程序结构都是类似的。这个以UDP协议为例简要说明。 #include <stdio.h> // 标准输入输出库 #include <sys/types.h> // 提供了一些数据类型,如ssize_t #include <sy…...
springboot/ssm车辆违章信息管理系统Java代码web项目汽车违章处罚源码
基于springboot(可改ssm)htmlvue项目 springboot/ssm车辆违章信息管理系统Java代码web项目汽车违章处罚源码 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库&…...
5G模组AT命令脚本-关闭模组的IP过滤功能
关闭模组的IP过滤功能 关闭模组的IP过滤功能 5G 模组通常使用nat方式为 下挂设备或上位机提供上网服务,默认情况,不做NAt的包无法经由 模组转发,如果禁掉这个限制 ,可使用本文中的配置命令本脚本用于关闭模组的IP过滤功能…...
STM32:实现ping命令(lwip)
目录 0.协议介绍ICMP数据包格式ping指令发送的ICMP回声请求消息ping指令接收的ICMP回声应答消息1.实现步骤2.源码分析2.1 初始化函数2.2 发送函数2.3 回调函数2.3.1 函数定义:2.3.2 解析数据包:2.3.3.处理ICMP数据包:2.3.4 资源释放:2.3.5 返回值:3.源码展示4.源码链接5.问…...
nvm安装指定版本显示不存在及nvm ls-remote 列表只出现 iojs 而没有 node.js 解决办法
在使用 nvm install 18.20.3 安装 node 时会发现一直显示不存在此版本 Version 18.20.3 not found - try nvm ls-remote to browse available versions.使用 nvm ls-remote 查看可安装列表时发现,列表中只有 iojs 解决方法: 可以使用以下命令查看可安装…...
Spring Boot 中 WebClient 的实践详解
在现代微服务架构中,服务之间的通信至关重要。Spring Boot 提供了 WebClient,作为 RestTemplate 的替代方案,用于执行非阻塞式的 HTTP 请求。本文将详细讲解 WebClient 的实践,包括配置、使用场景以及常见的优化策略,帮…...
在GITHUB上传本地文件指南(详细图文版)
这份笔记简述了如何在GITHUB上上传文件夹的详细策略。 既是对自己未来的一个参考,又希望能给各位读者带来帮助。 详细步骤 打开目标文件夹(想要上传的文件夹) 右击点击git bash打开 GitHub创立新的仓库后,点击右上方CODE绿色按…...
【大模型系列篇】LLaMA-Factory大模型微调实践 - 从零开始
前一次我们使用了NVIDIA TensorRT-LLM 大模型推理框架对智谱chatglm3-6b模型格式进行了转换和量化压缩,并成功部署了推理服务,有兴趣的同学可以翻阅《NVIDIA TensorRT-LLM 大模型推理框架实践》,今天我们来实践如何通过LLaMA-Factory对大模型…...
30天学会Go--第7天 GO语言 Redis 学习与实践
30天学会Go–第7天 GO语言 Redis 学习与实践 文章目录 30天学会Go--第7天 GO语言 Redis 学习与实践前言一、Redis 基础知识1.1 Redis 的核心特性1.2 Redis 常见使用场景 二、安装 Redis2.1 在 Linux 上安装2.2 在 Windows 上安装2.3 使用 Docker 安装 Redis 三、Redis 常用命令…...
java 使用JSqlParser和CCJSqlParser 解析sql
maven <dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId><version>4.9</version> </dependency>解析SQL String sql "select aa,bb from b"; Statement statementCCJSq…...
基于spring boot的高校专业实习管理系统的设计与实现
文末获取源码和万字论文,制作不易,感谢点赞支持。 设计题目:基于spring boot的高校专业实习管理系统的设计与实现 摘 要 随着国内市场经济这几十年来的蓬勃发展,突然遇到了从国外传入国内的互联网技术,互联网产业从开…...
OpenCV相机标定与3D重建(11)机器人世界手眼标定函数calibrateRobotWorldHandEye()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算机器人世界/手眼标定: w T b _{}^{w}\textrm{T}_b wTb 和 c T g _{}^{c}\textrm{T}_g cTg。 cv::calibrateRobotWorldHa…...
计算机网络ENSP课设--三层架构企业网络
本课程设计搭建一个小型互联网,并模拟Internet的典型Web服务过程。通过此次课程设计,可以进一步理解Internet的工作原理和协议过程,并提高综合知识的运用能力和分析能力。具体目标包括: (1)掌握网络拓扑的…...
OpenClaw+GLM-4.7-Flash:3个提升开发效率的自动化脚本
OpenClawGLM-4.7-Flash:3个提升开发效率的自动化脚本 1. 为什么选择这个技术组合? 作为一名长期在终端里摸爬滚打的开发者,我一直在寻找能够真正融入日常工作的AI助手方案。直到遇到OpenClawGLM-4.7-Flash这个组合,才找到了理想…...
从LeetCode到ACM:迷宫最短路径的C++ BFS模板,这么写就对了
从LeetCode到ACM:迷宫最短路径的C BFS模板实战精解 在算法竞赛和面试刷题中,迷宫类问题是最经典的场景之一。无论是LeetCode上的简单矩阵遍历,还是ACM竞赛中复杂的路径搜索,广度优先搜索(BFS)都是解决这类问…...
DLL与静态库怎么选?5个真实案例解析动态链接库的优劣
DLL与静态库的架构决策:5个实战场景下的技术选型指南 1. 模块化开发中的DLL实践 在大型软件系统中,模块化设计是降低复杂度的关键策略。我们曾为某金融交易系统设计插件架构时,DLL的动态加载特性展现出独特优势: 内存共享机制&…...
基于动态三维环境下的Q-Learning算法无人机自主避障路径规划研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
Mac环境OpenClaw排错大全:Qwen3.5-4B-Claude接口连接问题
Mac环境OpenClaw排错大全:Qwen3.5-4B-Claude接口连接问题 1. 开篇:为什么需要这份排错指南 上周我在自己的M1 MacBook Pro上部署OpenClaw时,遇到了至少五种不同的报错。从npm权限问题到模型响应超时,每个错误都让我花费数小时搜…...
Android Studio中文界面本地化指南:提升开发效率的全场景解决方案
Android Studio中文界面本地化指南:提升开发效率的全场景解决方案 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack And…...
低成本搭建QQ机器人:OpenClaw+nanobot消息中转方案
低成本搭建QQ机器人:OpenClawnanobot消息中转方案 1. 为什么选择OpenClawnanobot方案 去年我在管理一个小型技术社群时,经常需要处理重复性的问答和通知发布。尝试过多个机器人框架后,最终选择了OpenClawnanobot的组合方案。这个方案最吸引…...
CAN总线大数据传输的解决方案
CAN总线通讯最多传输8个字节,如果需要传输大量数据该怎么办呢?这个问题工业界有很多成熟的解决方案,我现在就来详细为你介绍各种处理方法。 一、CAN协议的限制原因 CAN帧的数据场限制为8字节,主要是为了保证: • 实时性…...
【华为OD机试真题】战场索敌 · 区域统计问题 (Java/Go)
一、题目题目描述:有一个大小是 N*M 的战场地图,被墙壁 # 分隔成大小不同的区域。上下左右四个方向相邻的空地 . 属于同一个区域。只有空地上可能存在敌人 E。请求出地图上总共有多少区域里的敌人数小于 K。输入描述:第一行输入为 N, M, K&am…...
基于模型预测控制(MPC)的二自由度机械臂控制仿真模型复现与验证:[文献复现]的实践与结果分析
基于模型预测MPC的二自由度机械臂控制仿真模型【复现】 [1]参考文献:《Model predictive control of a two-link robot arm 》 [2]仿真完全参考给的文献搭建,波形与文献的基本一致二自由度机械臂的MPC控制总带着点"用未来预测现在"的玄学色彩。…...
