数据流图与信任边界
绘制数据流动方式及其跨越信任边界的位置。
数据流图与信任边界 是 CoddyKit 上的免费 Cyber Security Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cyber Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cyber Security Academy 课程共包含 4 节课。
为何先绘图
您无法在不了解的系统中发现威胁。数据流图(DFD)是威胁建模的基础:它以可视化方式展示数据如何在系统中流动。
该图会将隐含的假设明确呈现出来。一旦您能看到数据流向何处以及哪些人或组件会接触数据,就会更容易发现威胁。
DFD 的四种元素
DFD 只使用四种基本构件。请保持简单:
- 外部实体 — 您无法控制的人员或系统(用户、第三方应用程序接口)
- 进程 — 对数据进行转换的对象(服务、函数)
- 数据存储 — 数据存放的位置(数据库、文件、缓存)
- 数据流 — 元素之间的数据移动(箭头)
几乎任何系统都可以用这四种形状表示。
标准 DFD 符号
DFD 使用约定俗成的形状,因此任何人都能读懂:
External entity -> rectangle / square
Process -> circle (or rounded rectangle)
Data store -> two parallel lines (open rectangle)
Data flow -> labeled arrow
Trust boundary -> dashed line crossing flows简单的网页应用 DFD
请考虑一个基本的网页应用。其 DFD 用文本表示可能如下:
User (external) --HTTPS request--> Web App (process)
Web App --SQL query--> Database (data store)
Web App --API call--> Payment Provider (external)
Database --results--> Web App
Web App --HTTPS response--> User什么是信任边界
信任边界是图中信任级别发生变化的任何一条线。一侧的数据或调用方可信,另一侧则不可信。
信任边界是 DFD 中与安全最相关的特性,因为它标出了以下位置:
- 数据应当被验证
- 调用方应当通过身份验证和授权
- 权限级别发生变化
大多数漏洞恰恰存在于数据跨越信任边界之处。
常见信任边界
一旦开始留意,您会发现信任边界无处不在。常见示例包括:
- 从互联网到您的应用程序(不可信的用户输入到达)
- 从应用程序到数据库
- 低权限进程和高权限进程之间
- 您的系统与第三方应用程序接口之间
- 容器和主机之间
- 跨越网络分段(从 DMZ 到内部网络)
每个边界都值得进行明确、仔细的审查。
在 DFD 上绘制边界
将信任边界添加为虚线,使其穿过所影响的数据流。在我们的网页应用中:
User (external)
| HTTPS
- - - - - - - - - - - - <- Trust boundary: internet / app
v
Web App (process)
| SQL
- - - - - - - - - - - - <- Trust boundary: app / database
v
Database (data store)边界告诉您在哪里应用 STRIDE
信任边界将本课与 STRIDE 联系起来。跨越边界的数据流就是您应当重点进行 STRIDE 分析的地方。
在互联网到应用程序的边界处,请询问:
- 欺骗 — 调用方是否通过了身份验证?
- 篡改 — 输入是否经过验证?
- 信息泄露 — 通道是否加密?
- 拒绝服务 — 是否设置了速率限制?
边界能将抽象框架转化为具体问题。
选择合适的粒度
DFD 可能过于模糊,也可能过于详细,两者都会导致失败。
- 层次过高 — 一个标为“系统”的框隐藏了所有值得关注的边界
- 过于详细 — 包含每个函数和变量,让您淹没在噪声之中
目标是达到这样一个层次:每个主要组件和信任边界都清晰可见。请使用分层 DFD:先用上下文图表示整个系统,再分别深入分析复杂进程。
与团队一起验证图
由一个人绘制的 DFD 通常包含错误假设。请与构建该系统的人员一起逐步检查。
请提出一些深入问题:
- 数据真的只有这一条路径可以到达数据库吗?
- 这里是否遗漏了管理员路径或批处理路径?
- 是否有任何内容绕过了这一步身份验证?
- 其他位置是否存在这些数据的缓存副本?
隐藏的数据流经常导致漏洞被遗漏。
让图表始终保持最新
系统会不断变化,过时的 DFD 会误导读者。过时的图表比没有图表更糟糕,因为它会造成错误的信心。
在以下情况下更新 DFD:
- 新增了集成或外部依赖
- 出现了新的数据存储
- 信任模型发生变化(某项服务移至新的网络区域)
应将 DFD 视为与系统同步维护的文档,而不是一次性的产物。
快速检查
检验您对 DFD 和信任边界的理解。
回顾
您已经学会了如何为威胁建模绘制系统地图:
- DFD 使用四种元素:外部实体、处理过程、数据存储和数据流
- 信任边界 标记信任发生变化的位置,也是大多数漏洞存在的位置
- 跨越边界的数据流是您进行 STRIDE 分析时应重点关注的对象
- 选择合适的粒度,并使用分层图表
- 与团队一起验证 DFD,并使其保持最新
接下来,您将使用攻击树对威胁进行分级,并确定缓解措施的优先级。
常见问题解答
「数据流图与信任边界」课时是免费的吗?
是的 — 「数据流图与信任边界」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。
「数据流图与信任边界」这节课中我会学到什么?
绘制数据流动方式及其跨越信任边界的位置。 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cyber Security Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cyber Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「数据流图与信任边界」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cyber Security Academy 课中编写并运行代码吗?
能。每节 Cyber Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。