Non sono sicuro di cosa si intenda esattamente con un'applicazione moderna. Sì, molti framework, ORM, Entity Framework, ecc. Scompongono le query e possono applicare alcuni filtri di default. Tuttavia, in scenari più complessi che richiedono la codifica personalizzata, o in cui le funzioni ORM o di libreria non faranno esattamente ciò che si desidera, si aprirà la porta all'iniezione SQL o ad altri attacchi.
Con molti ORM e framework, la parte di sicurezza è integrata. Ciò ha l'impatto di occuparsi automaticamente di alcuni problemi di sicurezza, ma allo stesso tempo, molti sviluppatori potrebbero non capire cosa queste funzioni di libreria facciano per loro, e quando hanno bisogno di creare una soluzione su misura, seguono solo alcuni tutorial e non sanno di dover prendere in considerazione la sicurezza.
Inoltre, quando esci dalle app di tipo CRUD di base per l'utente finale, gli sviluppatori potrebbero aver bisogno di usare librerie meno ben mantenute. Ad esempio, diciamo che hai un'app aziendale in cui qualcuno può caricare un file CSV
e che viene elaborato. Forse qualcuno ha scritto una libreria per gestire questo e non ha usato l'ORM, funziona così che i tuoi sviluppatori lo seguano. Il CSV viene quindi letto riga per riga e elaborato nel database, qui è possibile eseguire l'iniezione SQL.
L'iniezione SQL è un sintomo di una mancanza di corretta convalida dell'input, la probabilità di ciò aumenta in scenari meno comuni o più complessi in cui non può essere cotta o è un ripensamento.
Inoltre, le applicazioni "moderne" possono sembrare moderne ma sono costruite su alcune vecchie cianfrusaglie o su alcune strane connessioni legacy che gettano via le aspettative.