Il controllo del flusso di informazioni è un concetto ampio, ma il punto cruciale è che si può tentare di aumentare la sicurezza di un processo identificando quali parti della memoria dovrebbe legittimamente modificare, e quindi confrontandolo con le parti della memoria in realtà tenta di modificare. Questo può essere ampio o dettagliato a piacere: potresti prendere in considerazione Code Access Security come un vero e proprio modulo di IFC, o anche qualcosa di semplice come i permessi e il controllo dei file. Più comunemente, tuttavia, l'IFC viene applicato al codice in fase di compilazione / collegamento e applicato nell'assembly generato (o nel runtime della lingua se il programma è basato su JIT). Questo può anche, più ampiamente, essere applicato a casi come la perdita di informazioni, in cui si desidera capire come un dato sensibile si fa strada attraverso il sistema.
L'analisi di Taint è un meccanismo attraverso il quale è possibile implementare alcuni aspetti di IFC. Al fine di produrre la lista bianca delle sezioni di memoria legittime che un'operazione dovrebbe toccare, il compilatore valuta il codice per quali variabili vengono lette / scritte, quali funzioni vengono chiamate e quali percorsi di codice dovrebbero essere seguiti (ad esempio se un metodo viene chiamato con un valore statico, può dedurre che determinati rami devono sempre essere presi / non presi). Questo elenco può essere considerato come un elenco di entità che sono contaminate dall'operazione. In un caso più ampio, il controllo dell'inquinamento può anche essere usato come parte delle tecniche di analisi del codice in cui le fonti (cioè le posizioni da cui arrivano input non attendibili) possono essere mappate contro gli scarichi (cioè le posizioni in cui si verificano le operazioni rilevanti per la sicurezza), in modo tale che ciascuna sorgente abbia una lista di drenaggi mantenuti, e ogni drain ha una lista di fonti da cui può essere potenzialmente contaminato - questo è comunemente dimostrato considerando un caso in cui il valore dell'URL (source) potrebbe raggiungere una query SQL (drain), con conseguente iniezione SQL.
L'integrità del flusso di dati è semplicemente un termine usato per descrivere se un'applicazione in protezione IFC si è allontanata o meno dal flusso previsto. Quando il programma viene eseguito, è strumentato in qualche modo al fine di garantire che ogni istruzione o insieme di istruzioni non violi l'integrità del flusso di dati, vale a dire che i valori che non dovevano essere scoperti dall'operazione sono rimasti tali.