2021/02/19

Le parole di Internet: input validation. La storia di un uomo alto 6,2 cm

Liam Thorp è un trentaduenne britannico in ottima salute che scrive per il Liverpool Echo. Normalmente dovrebbe essere in fondo alla lista d’attesa per le vaccinazioni anti-Covid, che vengono fatte prioritariamente a chi è più avanti negli anni o ha problemi di salute, ma la BBC racconta che gli è arrivato l’invito a vaccinarsi perché risultava clinicamente obeso. Aveva infatti un indice di massa corporea di 28.000 (ventottomila), quando i valori normali di questo indice oscillano fra 18 e 24.

Il disguido, che lui stesso racconta qui, è avvenuto perché la sua statura era stata registrata nei sistemi informatici della sanità britannica immettendo piedi e pollici in un campo fatto per contenere un valore espresso in centimetri. Thorp è alto 6 piedi e 2 pollici (187 cm), e così qualcuno ha immesso 6,2 (anzi, 6.2 secondo la notazione anglosassone).

Risultato: il sistema ha accettato senza batter ciglio che Thorp avesse una statura di 6,2 centimetri ed è poi andato a calcolare il suo indice di massa corporea prendendo il suo peso e la sua statura e ha quindi deciso che il soggetto era incredibilmente obeso. 

Il sistema ha poi preso questo dato di obesità impossibile e lo ha usato come criterio per l’emissione dell’invito a vaccinarsi.

Thorp l’ha presa bene, ma se il sistema può commettere errori di questo genere potrebbe anche commetterli nell’altro senso e negare una vaccinazione a chi ne ha bisogno. 

Questo genere di problema tipicamente informatico nasce dal fatto che chi programma i computer non fa controlli di buon senso sui dati immessi. Un programma fatto bene non dovrebbe nemmeno accettare una statura di 6,2 centimetri.

Questo tipo di controllo va sotto vari nomi: input validation o input sanitization sono fra i più frequenti. La validation consiste nel controllare che in un campo venga immesso un dato pertinente (per esempio soltanto cifre in un campo destinato ad accogliere un numero) e sensato (una statura deve avere limiti massimi e minimi, per esempio).

La sanitization, invece, consiste nel verificare che i dati immessi non contengano caratteri che possono causare problemi nell’elaborazione successiva (per esempio qualcosa che possa essere interpretato come comando anziché come dato). 

Può sembrare banale, ma il mancato controllo dei dati immessi è la tecnica tipica di intrusione nei siti: si chiama SQL injection. Cito in proposito l’ormai storica vignetta di xkcd:


Nessun commento:

Posta un commento

Se vuoi commentare tramite Disqus (consigliato), vai alla versione per schermi grandi. I commenti immessi qui potrebbero non comparire su Disqus.

Pagine per dispositivi mobili