数据流分析(Data Flow Analysis, DFA)是指分析「数据在程序中是怎么流动的」,具体来说:
- 分析的对象是基于抽象的 应用特定型数据 (Application-Specific Data)
- 分析的行为是数据的「流动」,分析的方式是安全近似——根据安全性需求选择过近似( Over-Approximation )还是欠近似( Under-Approximation )
- 分析的基础是控制流图(Control Flow Graph, CFG),CFG 是程序 P 的表示方法
- 数据流动的场景有两个:
- 在 CFG 的点内流动,即程序基块内部的数据流动
- 在 CFG 的边上流动,即由基块间控制流触发的数据流动