尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
面试笔记:数据加密和心跳机制
一、数据库中的数据加密数据库加密并不是一个开关而是多层防护。不同方式解决的是不同类型的风险。1. 连接加密TLS/SSL连接加密主要用于防止数据在网络传输过程中被抓包或窃听。客户端和数据库之间开启 TLS/SSL 后网络上传输的是密文。即使有人抓包看到的也只是无法直接理解的数据。它主要防的是网络抓包链路窃听中间人攻击但前提是证书校验正确。2. 表空间加密表空间加密指的是数据库文件落盘时进行加密。例如 MySQL 的.ibd文件中的数据页可以被加密。即使攻击者把整个数据库文件复制走也不能直接读取其中的数据。它的优点是应用代码基本不需要修改。但它也有局限如果有人拥有数据库账号并且有SELECT权限那么他仍然可以通过 SQL 查询到明文数据也可能通过逻辑导出拿走数据。所以表空间加密主要解决的是“数据库物理文件泄露”而不是“高权限账号滥用”。3. 字段加密对于手机号、身份证号、银行卡号等敏感数据可以单独进行字段加密。MySQL 可以使用AES_ENCRYPT()和AES_DECRYPT()。示例SET block_encryption_mode aes-256-cbc; SET key_str SHA2(my_secret_key, 512); SET iv RANDOM_BYTES(16); INSERT INTO user_secure(username, phone_cipher, phone_iv) VALUES ( zhangsan, AES_ENCRYPT(13812345678, key_str, iv), iv ); SELECT username, CAST(AES_DECRYPT(phone_cipher, key_str, phone_iv) AS CHAR) AS phone FROM user_secure;实际生产环境中更推荐由应用层或专业密钥管理服务管理密钥而不是把密钥和密文都放在同一个数据库中。另外同一个明文如果每次使用随机 IV加密结果不同是正常的而且更安全。4. 密文加哈希检索字段字段加密后通常无法直接进行等值查询或模糊搜索。例如手机号加密后如果还要根据手机号查用户可以额外保存一个哈希检索字段。常见做法是保存加密后的手机号用于展示或解密保存手机号的 HMAC 哈希用于等值查询查询时对输入手机号做同样的 HMAC 计算再查询哈希字段。不要直接使用普通 SHA-256 保存手机号因为手机号取值空间较小容易被枚举反查。5. 密码不能加密只能哈希密码不应该使用 AES 等可逆加密算法保存。因为一旦密钥泄露所有密码都可能被解密。密码校验只需要判断“输入是否正确”不需要恢复原始密码。因此密码应该使用专门的慢速、带盐哈希算法例如Argon2idbcryptscrypt总结一句话传输加密防抓包表空间加密防文件泄露字段加密防明文存储密码必须使用专用哈希。二、什么是心跳机制心跳机制就是客户端和服务器之间定期发送一个很小的数据包用来证明“我还活着连接还正常”。可以理解为客户端每隔几秒告诉服务器一次“我还在线。”服务器收到后就更新这个连接的最后活跃时间。如果服务器在一段时间内没有收到任何消息就认为客户端可能掉线了。心跳机制的主要作用检测连接是否仍然可用防止 NAT、代理、网关等中间设备回收空闲连接及时发现掉线用户更新在线状态清理无效连接释放服务端资源。WebSocket 协议本身定义了 Ping/Pong 控制帧优先使用框架提供的 Ping/Pong 能力。浏览器原生 WebSocket API 不能直接发送协议级 Ping 时也可以定义应用层的heartbeat消息。一个常见策略客户端每 2030 秒发送一次心跳服务端记录lastActiveAt如果连续 23 个周期没有收到消息则关闭连接超时时间要结合网关、Nginx、负载均衡的空闲超时一起配置。三、心跳机制问题排查排查心跳问题时先分成两类心跳不正常心跳包没有正常收发心跳正常连接还活着但业务消息仍然有问题。心跳不正常时怎么排查1. 客户端有没有发送检查浏览器网络面板、客户端日志和定时器。注意浏览器进入后台、手机省电模式、系统休眠时定时器可能会被暂停或降频。2. 服务端有没有收到服务端日志中应该记录用户 ID连接 ID服务节点 ID心跳接收时间消息类型不要只打印“收到心跳”这种无法关联用户的信息。3. 服务端有没有正确处理或返回检查消息类型是否一致JSON 序列化和反序列化是否正确心跳处理是否抛异常Ping/Pong 或 ACK 的返回逻辑是否正常。4. 超时时间是否合理客户端的发送周期、服务端的超时时间、网关的超时时间必须匹配。例如客户端每 30 秒发送一次心跳而服务端 20 秒就判定超时那么一定会频繁误判掉线。5. Nginx、网关、负载均衡是否提前断开很多线上问题并不是代码问题而是代理层超时配置问题。重点检查Nginx 的proxy_read_timeout网关空闲超时负载均衡连接超时CDN 是否支持 WebSocket防火墙或 NAT 是否回收空闲连接6. 服务端扫描逻辑有没有 Bug重点检查时间单位是秒还是毫秒超时判断是否写反遍历连接时是否有并发问题用户重连后旧连接关闭时是否误删了新连接关闭连接后在线状态是否正确更新。心跳正常但业务仍然有问题怎么办如果心跳一直正常说明连接大概率还活着但不代表业务消息一定发送成功或展示正确。此时应该继续排查房间状态是否正确用户是否还在正确的房间或订阅中Redis 中的在线状态是否被旧连接覆盖消息队列是否积压、消费失败或重复消费多个 WebSocket 节点之间是否完成消息广播客户端是否收到了消息但状态管理或渲染逻辑没有更新。线上排查最好让每条消息带上可关联字段requestId messageId userId connectionId nodeId timestamp这样才能把一条消息从“客户端发送”到“网关转发”再到“服务端接收、消息广播、客户端展示”的完整链路串起来。十、总结心跳机制解决的是连接是否存活但不能保证业务消息一定正确送达。数据库加密也不是一个单点能力而是传输加密、存储加密、字段加密、权限控制和密钥管理共同组成的安全体系。面试时不要只回答“是什么”还要能说明它解决什么问题它的优点和代价是什么它的适用边界在哪里出问题时如何排查。真正的工程能力往往就体现在这些追问里。
RELATED

相关推荐

引擎选择问题:Godot 和 Unity 哪个好?新手先按这几个问题选

引擎选择问题:Godot 和 Unity 哪个好?新手先按这几个问题选

大家好,我是 SiKi老师。常有人直接问我“Godot 和 Unity 哪个好”。我的回答是:没有一个对所有人都成立的答案,但有几个问题能帮你把范围缩小。这篇是一份选型指南,不是性能评测:我没有在本文里安装或运行这两个引擎&a…

📅 2026/10/31 17:44:08
2027年PMP什么时候考?官方节奏、机构排课信号与备考时间线

2027年PMP什么时候考?官方节奏、机构排课信号与备考时间线

说明:本文仅基于公开信息对2027年PMP考期做推测性梳理,不推荐任何考试、培训机构或课程,也不构成报名、购课或备考决策建议。文中日期除2026年官方计划外均为推断,最终以PMI及中国国际人才交流基金会官方通知为准。一句话结论&…

📅 2026/10/31 17:44:08
海洋场馆水质数据数字化、可溯源是未来刚需

海洋场馆水质数据数字化、可溯源是未来刚需

从系统集成视角来看,海岛、种业实验室、海洋科普馆、循环水基地的水质数字化,不只是简单采集参数上云,核心诉求是时序数据可信、链路可审计、分级权限隔离,既是科研RAS种质试验的基础条件,也是智慧海洋示范项目、专项材…

📅 2026/10/31 17:44:08
MORE NEWS

更多资讯

📰

BarTender标签打印实战:驱动字体、数据库序列与RFID避坑

简介:《BarTender使用说明书》是一份面向条码标签设计与打印初学者及一线工程人员的操作型文档,可用于快速熟悉软件界面、驱动配置与批量打印流程,也可作为日常排错时的查阅手册。资源包仅含1个doc文件,大小约1.23MB,篇…

📰

IAR老平台工程配置实战:LPC2148从新建工程到C-SPY调试

简介:这份资源是面向嵌入式开发初学者与参加 NXP ARM MCU 类设计竞赛学生的 IAR Embedded Workbench for ARM 快速入门手册,针对不熟悉 IDE 工程配置与调试流程的人群,解决从建工程到下载调试缺乏系统指引的问题。资源为单个 ppt 文件&#x…

📰

指令过细导致系统偏离:技术实践中的平衡艺术

1. 指令过细导致系统偏离的现象解析在技术开发和管理实践中,我们常常遇到一个反直觉的现象:当指令写得过于详细时,系统反而更容易偏离预期目标。这种情况在软件开发、自动化系统设计、甚至团队管理中都有典型表现。最近我在设计一个内容管理系…

📰

Java面试八股文全解析:从筛选工具到知识地图与复习边界

简介:面向 IT 面试备考的「八股文」PDF 合集,聚焦 Java 后端常见考点,适合需要系统梳理 Redis、MySQL、算法、线程与数据结构等知识的初中级开发者和求职者,可用于面试前查漏补缺、建立答题框架。压缩包内共 1 个 PDF 文件&#x…

📰

3-2-1高效学习法:快速掌握新领域的系统框架

1. 3-2-1学习法则的核心框架这个学习方法的精髓在于将学习过程分解为三个关键阶段:3天快速入门、2周系统构建和1个月深度内化。每个阶段都有明确的目标和具体执行方法。1.1 3天快速突破期我用这个方法学习新领域时,前三天会集中精力完成以下任务&#xf…

📰

AI编程助手Skills机制解析:从Claude Code到Codex的插件化实践

1. 从“skills”这个模糊词说起:它到底指什么第一次看到“skills”这个词单独作为项目标题,说实话我是有点懵的。它太宽泛了,宽泛到几乎可以套在任何东西上。但结合热搜词里反复出现的 Claude Code、Codex、plugin、agents 这些词&#xff0c…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬