La nuova funzionalità attualmente in fase di sperimentazione tramite il programma early access di JetBrains è dedicata agli sviluppatori PHP e alla cosiddetta taint analysis. Alla base di quest'ultima vi è il concetto di "taint" (contaminazione o macchia in Italiano), con il quale viene identificato un qualunque valore che, se modificato da un utente esterno, potrebbe creare dei rischi di sicurezza.
Cos'è la taint analysis
La taint analysis nasce per offrire protezione contro le vulnerabilità dovute ai dati non verificati provenienti da terze parti. Basti pensare ad una porzione di sorgente come la seguente dove il valore raccolto non è stato ancora sanitizzato:
$dato = $_GET['informazione'];
Questi ultimi sono infatti alla base di diversi tentativi di attacco che vanno dalla SQL injection al Cross-Site Scripting. Ciò per citare le sole minacce più frequenti. JetBrains sta quindi testando uno strumento il cui primo compito è quello di rilevare tutte le componenti di un'applicazione che accettano input esterni.
In questo modo ci si potrà accertare che i dati in ingresso, ad esempio quelli inviati tramite form, vengano validati correttamente prima di essere elaborati.
Qodana e taint analysis
Tale feature è stata implementata da subito per PHP perché Qodana, il primo linter (o code quality platform) dell'azienda, nota tra l'altro per l'IDE IntelliJ IDEA, è stato concepito proprio per questo linguaggio. È da segnalare inoltre che la taint analysis è disponibile unicamente in Qodana for PHP 2023.1.
L'estensione ad altri linguaggi è stata già pianificata a testimonianza di come Qodana sia destinata a coinvolgere un numero sempre maggiore di potenziali utilizzatori. Attualmente l'applicazione supporta oltre a PHP anche ambienti basati su JavaScript, Go, Python, Android, .NET e JVM. È possibile utilizzarlo anche sotto forma di servizio Cloud based e immagine Docker.
La sua utilità principale risiede nella possibilità di ottenere una stima precisa del cosiddetto debito tecnico. Sostanzialmente il numero di bug potenzialmente presenti nel codice che necessitano di fixing.