La prestazione è una delle qualità che cerco di attribuire ai progetti che curo, a volte con risultati ottimi. Ci sono casi però in cui un software "veloce" apporta un problema di sicurezza informatica da non sottovalutare; facciamo un esempio.
Immaginate un form di Login. Fatto? (Muciaccia Mode: ON) Adesso immaginate un bot (software automatizzato) che tenta una serie di accessi sequenziali per effettuare un password crack. Se il form di Login è super-performante, il bot avrà già tentato un migliaio di accessi casuali prima che ve ne rendiate conto.
Immaginate un form di Login. Fatto? (Muciaccia Mode: ON) Adesso immaginate un bot (software automatizzato) che tenta una serie di accessi sequenziali per effettuare un password crack. Se il form di Login è super-performante, il bot avrà già tentato un migliaio di accessi casuali prima che ve ne rendiate conto.
Una soluzione potrebbe essere quella di aggiungere un delay esponenziale ad ogni tentativo di accesso fallito oppure, soluzione leggermente più elegante, impiegare le sicurezze di un RDBMS per limitare il numero di query provenienti da un indirizzo IP magari creando delle vere e proprie blacklist di accesso.
A volte, la ricerca di performance allontana il programmatore dalla visione di insieme rischiando problemi di accesso simili a quello proposto come esempio.
Nessun commento:
Posta un commento