安全基础

目录概述

你的密码存在数据库里,被人拖库了怎么办?用户请求被劫持了怎么办?怎么防止越权访问别人的数据?

这个模块用直观类比和生产安全案例,带你理解安全不是选修课,而是每个工程师的必修课。面试里安全问题的比重越来越高,不懂安全的工程师,写出来的代码就是定时炸弹。

【直观类比】 安全就像买房时的消防设施。不出事的时候你觉得浪费钱,一出事就是灭顶之灾。密码不加密、接口不鉴权、数据不脱敏——这些"省事"的代码,都是埋在系统里的雷。

内容范围

密码安全

  • 明文密码存储的危害
  • 哈希加盐(bcrypt、PBKDF2)
  • 密码加密和验证流程
  • Session和Token的安全管理

加密算法

  • 对称加密(AES、DES、3DES)
  • 非对称加密(RSA、ECC)
  • 哈希算法(MD5、SHA-1、SHA-256)
  • 数字签名和数字证书
  • HTTPS的工作原理

Web安全

  • XSS(跨站脚本攻击)
  • CSRF(跨站请求伪造)
  • SQL注入
  • 接口防刷和限流
  • 越权访问和鉴权设计

安全协议

  • TLS/SSL握手过程
  • 证书链验证
  • HTTP Strict Transport Security
  • Content Security Policy

【直观类比】 加密算法就像不同的锁:对称加密是钥匙开门钥匙锁门(非对称加密是一把公钥锁门、私钥开门),哈希算法是给数据做"指纹"——指纹不能还原人,但可以验明正身。

学习路径指引

第一阶段:建立安全意识(1周)

这个阶段要知道常见漏洞基本防护手段

必须掌握

  • OWASP Top 10(Web应用十大安全风险)
  • 什么是XSS、CSRF、SQL注入
  • 为什么永远不要明文存储密码
  • 什么是HTTPS,它解决了什么问题

生活类比

  • XSS就像有人在你的留言板里塞了一段JS代码,别人访问时就会执行——相当于在你的店里贴了小广告
  • SQL注入就像有人把SQL命令伪装成输入内容——相当于有人在你家门锁里塞了万能钥匙

第二阶段:理解加密原理(1-2周)

这是面试中最能拉开差距的地方。

必须理解

  • 对称加密和非对称加密的区别和使用场景
  • 数字签名为什么能防篡改
  • 证书链验证的原理
  • 为什么MD5/SHA-1不再安全
  • AES的常见工作模式(GCM、CBC)

常见困惑点

  • "HTTPS是加密的,那中间人攻击怎么防的?"
  • "客户端存Token安全吗?和Session比呢?"
  • "加盐是为了防止什么?彩虹表是什么?"

【直观类比】 非对称加密就像一个带锁的邮箱。任何人都能把信塞进去(用公钥加密),但只有邮递员能打开(用私钥解密)。私钥一旦泄露,邮箱就不安全了——这就是为什么私钥要保护好。

第三阶段:实战安全设计(1-2周)

这个阶段要能识别风险设计安全方案

核心能力

  • 能识别代码里的安全漏洞
  • 能设计安全的接口鉴权方案
  • 知道怎么做数据脱敏和加密存储
  • 了解常见的安全监控和风控手段

高频面试题

  • "你的系统怎么防止接口被刷?"
  • "用户密码怎么存储才安全?"
  • "如果让你设计一个登录系统,你怎么保证安全?"

导航指引

安全学完后,这些相关知识等着你:

  • 计算机网络 - HTTPS、TLS协议是网络层面的安全基础
  • Java IO - 加密流、SecurityManager在Java里怎么用
  • 分布式系统 - 认证授权、OAuth2、JWT在微服务里的应用

或者回到 CS首页 查看全貌。

💡

面试加分项:能说出"密码存储用bcrypt而不是MD5"的候选人,已经比80%的竞争者强了。知道为什么的,基本上面试稳过。

⚠️

安全切忌"事后补救"。2019年某知名网站的密码泄露事件,就是因为密码只用MD5哈希没加盐。密码明文存储不只是技术问题,是职业道德问题。