El control del flujo de información es un concepto amplio, pero el punto crucial es que uno puede intentar aumentar la seguridad de un proceso identificando qué partes de la memoria debería modificar legítimamente, y luego comparando eso con qué partes de la memoria realmente Intenta modificar. Puede ser tan amplio o granular como desee: podría considerar Code Access Security como un formulario muy completo de la IFC, o Incluso algo tan simple como permisos de archivos y auditorías. Sin embargo, más comúnmente, IFC se aplica al código en tiempo de compilación / enlace y se aplica en el ensamblado generado (o en el tiempo de ejecución de idioma si el programa está basado en JIT). Esto también puede, de manera más general, aplicarse a casos como la fuga de información, donde desea comprender cómo una información confidencial se abre paso a través del sistema.
El análisis de contaminación es un mecanismo mediante el cual se pueden implementar algunos aspectos de la CFI. Para generar la lista blanca de secciones de memoria legítimas que se espera que una operación toque, el compilador evalúa el código de las variables que se leen / escriben, las funciones que se llaman y las rutas de código que se deben seguir (por ejemplo, si un método se llama con un valor estático, puede inferir que ciertas ramas siempre deben tomarse / no tomarse). Esta lista puede considerarse como una lista de entidades que están contaminadas por la operación. En un caso más amplio, la verificación de la contaminación también se puede utilizar como parte de las técnicas de análisis de código donde las fuentes (es decir, las ubicaciones de donde proviene la entrada no confiable) se pueden mapear contra los drenajes (es decir, las ubicaciones donde ocurren operaciones relevantes para la seguridad), de manera que cada fuente tiene una lista de drenajes contaminados, y cada drenaje tiene una lista de fuentes desde las cuales puede potencialmente contaminarse; esto se demuestra comúnmente al considerar un caso en el que el valor de URL (fuente) puede alcanzar una consulta SQL (drenaje), lo que resulta en una inyección de SQL.
La integridad del flujo de datos es simplemente un término usado para describir si una aplicación bajo protección IFC se ha desviado fuera del flujo esperado. Cuando se ejecuta el programa, está instrumentado de alguna manera para garantizar que cada instrucción o conjunto de instrucciones no viole la integridad del flujo de datos, es decir, los valores que se esperaba que no se contuvieran con la operación se mantuvieron así.