La nostra vita sulla rete è costellata di URL eppure la progettazione degli URL è avvenuta senza tenere presente il concetto di Security By Design.
Gli Url sono uno standard IETF definiti nella RFC1738 e successivi aggiornamenti (sembra quasi di parlare legalese). La sintassi è apparentemente semplice ma la loro difficile validazione ha portato ad una innumerevole serie di piaghe, molte delle quali di sicurezza.
Parlo dei malformed URL che hanno messo in crisi una lunghissima serie di prodotti Microsoft, IBM, Sun, Mozilla, Macromedia, Adobe, Skype, ..., ovviamente in totale indifferenza del sistema operativo (Windows, varie distro Linux e Macintosh). Ovviamente a ruota seguno tutte le applicazioni sviluppate dagli ISV e dalle software house "minori".
Mi chiedo perciò il motivo per cui, dopo milioni di dollari di danni, per quale motivo non ci sia uno sforzo congiunto per realizzare le specifiche di validazione di un URL a cui fare seguito con librerie sviluppate per ogni linguaggio ed ogni piattaforma di sviluppo.
La creazione delle validazioni e le relative librerie sarebbero un lavoro minimo di fronte al cataclisma di danni, per lo più di sicurezza ma non solo, causati dall'errata validazione degli URL.
Voglio sottolineare la grossa differenza tra specifiche, test e specifiche di validazione. Le prime dicono come è composto un URL, parlano della sintassi e del loro scopo. Il caso della validazione degli URL si presta molto bene ad una suite di test ma attenzione, chi testa i test? (http://www.secretgeek.net/tdd_wttt.asp).
È per questo che parlo di specifiche della validazione altrimenti ci ritroveremo a parlare di bug by design.
Vorrei ... vorrei vedere un giorno:
- Un supporto per la validazione e le informazioni sulla sicurezza degli Uri nelle API sistema operativo
- Un supporto per la validazione e le informazioni sulla sicurezza dei File e delle Path nelle API del sistema operativo
- Che le classi del Framework.NET usino queste API nelle varie classi (vedi classe Uri, Path, FileInfo, etc.)