CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
网络安全入门/课时/安全职业与 IT 基础
RawBlame
课时目录12 节

网络安全入门

  1. 01安全职业与 IT 基础
  2. 02网络与安全基础
  3. 03操作系统加固
  4. 04密码学与 PKI
  5. 05身份与访问控制
  6. 06威胁与攻击向量
  7. 07防御技术与工具
  8. 08事件响应与取证
  9. 09云与虚拟化安全
  10. 10渗透测试入门
  11. 11合规与认证
  12. 12综合练习

安全职业与 IT 基础

fundamental-it-skills、硬件与编程基础。

30 分钟

网络安全入门:建立安全思维

这一课你将能做到

  1. 用 CIA 三元组准确描述一次安全事件究竟破坏了什么
  2. 在本机搭建一套完全合法的学习靶场(Docker + DVWA)
  3. 为自己的 Spring Boot 项目列出第一份资产清单与攻击面地图

为什么要学

网络安全不是「黑客炫技」,而是系统性降低风险的工程学科。对企业来说,一次接口越权、一次数据库脱库,损失是直接的金钱、口碑与合规处罚;对开发者来说,安全是代码质量的最后一道验收。Java 后端工程师是最贴近攻击面的人——你写的每一个 Controller 都可能被直接访问,你引入的每一个依赖都可能带着 CVE。

初学者最容易把安全当成「一堆玄学工具包」。本课的目标是让你像工程师一样理解安全:定义资产 → 识别威胁 → 设计控制 → 持续验证。

先建立图像

把系统想象成一栋办公楼:

攻击者
  │  扫端口 ≈ 推门试探
  ▼
┌──────────────────────────────────────┐
│ 大门(公网入口):负载均衡 / WAF / 网关   │ ← 边界防御
│ ┌──────────┐   ┌──────────┐          │
│ │ 前台(应用) │   │ 保安(IAM) │          │ ← 认证授权
│ └────┬─────┘   └──────────┘          │
│      ▼                               │
│  办公区(业务逻辑、服务间调用)           │ ← 内部隔离
│      ▼                               │
│  保险柜(数据库 / 对象存储 / 密钥)       │ ← 数据保护
└──────────────────────────────────────┘
   审计摄像头(日志)覆盖每一层               ← 检测与取证

CIA 三元组对应三种破坏方式:

  • 机密性(Confidentiality):数据被偷——脱库、越权读取
  • 完整性(Integrity):数据被改——篡改订单金额、劫持更新包
  • 可用性(Availability):服务瘫痪——DDoS、误删生产库

跟着做

步骤 1:声明授权边界(最重要的一步)

未经授权对他人系统扫描或测试是违法行为。合法做法只有三种:

  1. 在自己拥有的虚拟机 / 云主机上练习
  2. 使用官方授权靶场:DVWA、VulnHub、HTB Academy、PortSwigger Web Security Academy
  3. 参与有书面授权的 SRC / 众测项目

本课起所有命令默认只打向 localhost。建议本机安装 Docker,练习环境随起随删。

步骤 2:部署 DVWA 靶机

# 启动 DVWA(练习 SQL 注入 / XSS / CSRF 的经典靶机)
docker run --rm -it -d -p 80:80 vulnerables/web-dvwa
# 浏览器访问
http://localhost
# 默认账号 admin / password,登录后点 Create / Reset Database 初始化

步骤 3:第一次「指纹收集」(对 localhost)

curl -I http://localhost
# 观察响应头:Server、X-Powered-By 暴露技术栈与版本
# Cookie 是否带 HttpOnly / Secure

Java 平台同理:Spring Boot 的 /actuator 若直接暴露公网,/actuator/env、/actuator/heapdump 会把配置和内存dump给攻击者。

步骤 4:给自己的项目建资产清单

资产例子被破坏的后果现有控制
用户数据手机号、密码哈希泄露 → 机密性
BCrypt、传输加密
管理接口/api/admin/**越权 → 机密性/完整性JWT + 角色校验
密钥JWT secret、DB 密码伪造身份 → 全部环境变量 / KMS
依赖log4j、fastjsonRCE → 全部依赖漏洞扫描
可用性登录接口被刷 → 可用性限流、验证码

这张表后面每节课都会用到,它是你做威胁建模的地基。

步骤 5:跑一次依赖漏洞扫描

# Maven 项目接入 OWASP Dependency-Check
mvn org.owasp:dependency-check-maven:check -DfailBuildOnCVSS=9
# 报告在 target/dependency-check-report.html,逐条核对 CVE 是否命中你的调用路径

讲清楚要点

  1. 安全 = 风险管理,不是消灭漏洞:风险 ≈ 威胁 × 脆弱性 × 资产价值。预算有限时先补「高价值资产上的高危漏洞」,而不是追求扫描器清零。
  2. 纵深防御:任何单层都可能被绕过。WAF 可能被绕、JWT 可能被伪造,所以要分层叠加:网络隔离 + 应用校验 + 数据加密 + 审计日志,单点失效不导致全盘失守。
  3. 最小权限:数据库账号不给 DROP、容器不用 root 跑、API Key 只授只读。出事时损失被天然限制在最小爆炸半径内。
  4. 安全左移:编码阶段修漏洞的成本大约是上线后的十分之一。在代码评审加安全检查项、在 CI 跑依赖扫描,比上线后救火便宜得多。
  5. 攻防不对称:防御者要守住所有门,攻击者只需找到一扇。因此「多久被发现、多久被修复」比「零漏洞」更现实——日志与监控是最后的底线。

你可能会懵的地方

  • 学安全必须先学编程吗? 做渗透可以后补,但做应用安全与防御必须懂代码。你是 Java 后端出身,这是巨大优势:既能看懂漏洞成因,也能直接改代码修复。

  • 必须装 Kali Linux 吗? 不是。Kali 只是预装工具的 Debian。初学者用 Ubuntu + Docker 按需装单个工具更干净,还能逼你理解每个工具的依赖关系。

  • DVWA 太老了还有用吗? 有用。它内置的漏洞(SQL 注入、XSS、CSRF、文件上传、SSRF)到今天仍是 OWASP Top 10 的主体。要贴近现代应用就把难度调到 high。

  • CTF 和实战差距大吗? CTF 是拼图式训练,题目里漏洞必然存在;实战多的是信息收集、绕过 WAF、对抗噪音。建议 CTF 与 PortSwigger Academy 并行,后者更接近真实 Web 应用。

  • Windows 环境有安全岗位吗? 有,域环境(AD)安全是大厂蓝队的核心方向之一。但 Web 后端安全的主战场仍是 Linux 服务器 + HTTP 协议,先把这条线打通。

错法对照

错法问题正解
对公网 IP 扫端口「练手」违法,可构成非法侵入计算机信息系统罪只打自建靶机与授权范围
把安全当独立阶段「上线前再做」返工成本极高需求评审阶段就做威胁建模
上了 WAF 就不做代码修复WAF 可被规则绕过WAF 是缓冲层,代码修复是根本
拿扫描器输出直接当结论误报率高,需人工验证逐条核实可达性与利用条件
密钥写进 application.yml 提交仓库泄露即全盘失守环境变量 / 密钥管理服务

卡点急救

  1. Docker 起 DVWA 报端口冲突:换映射 docker run -p 8080:80,或 docker ps 查占用者再停掉。
  2. 想练 Linux 提权:去 VulnHub 下载 Kioptrix 系列,VirtualBox 网卡选 Host-Only,与宿主网络完全隔离。
  3. 依赖扫描报告全红吓人:先按「CVSS ≥ 9 且命中你的调用路径」两个条件过滤,其余排期分批修,不要试图一次清零。

面试常问

  • 解释 CIA 三元组,各举一个真实案例。 机密性:网站被脱库导致百万手机号泄露;完整性:攻击者篡改请求中的价格字段低价下单;可用性:DDoS 打瘫支付网关。答题要点是每个都落到「什么资产、被谁、以什么方式破坏」。

  • 开发和安全团队冲突怎么办? 把争执从「要不要修」转成风险语言:风险等级 × 利用成本 × 修复成本。先给临时缓解(WAF 规则、限流),再给根治排期,而不是二选一。

  • 什么是威胁建模?说一个可落地的方法。 用 STRIDE 沿数据流图逐个节点提问:仿冒、篡改、抵赖、信息披露、拒绝服务、提权。例:给下单接口画数据流,发现「价格由前端传入」属于篡改,控制是服务端以数据库价格为准并校验签名。

自测三问

  1. 机密性和完整性被破坏的场景,各说一个你项目里可能真实发生的?
  2. 为什么说最小权限原则能天然缩小爆炸半径?
  3. 不看笔记,你能列出 Spring Boot 项目的 4 类核心资产吗?

小结一句话

安全是工程化的风险管理:定义资产、评估风险、分层设防、持续验证,而这一切只允许发生在你拥有授权的范围之内。

延伸

  • OWASP 官方
  • NIST Computer Security Resource Center
  • 下一课:网络侦察与抓包——用 nmap、tcpdump、Wireshark 看清你的攻击面。
加载本节练习…
下一课 →网络与安全基础