安全基础
目录概述
你的密码存在数据库里,被人拖库了怎么办?用户请求被劫持了怎么办?怎么防止越权访问别人的数据?
这个模块用直观类比和生产安全案例,带你理解安全不是选修课,而是每个工程师的必修课。面试里安全问题的比重越来越高,不懂安全的工程师,写出来的代码就是定时炸弹。
【直观类比】 安全就像买房时的消防设施。不出事的时候你觉得浪费钱,一出事就是灭顶之灾。密码不加密、接口不鉴权、数据不脱敏——这些"省事"的代码,都是埋在系统里的雷。
内容范围
密码安全:
- 明文密码存储的危害
- 哈希加盐(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哈希没加盐。密码明文存储不只是技术问题,是职业道德问题。