Dobbiamo partire dal presupposto che tutti i dati che arrivano dall’esterno sono potenzialmente pericolosi.
E’ doveroso cercare di avere una struttura robusta che protegga da eventuali attacchi volontari, ma anche da possibili errori dell’utente.
Un esempio di dati da sottoporre a questi processi sono:
- Dati passati tramite un form
- Dati passati tramite URL
La Validation e il Sanitize sono due operazioni differenti e molto dipende da come li andremo ad utilizzare.
Cos’è la validazione dei dati
La validazione dati è il processo di comparazione dei dati con delle regole da noi stabilite. Andiamo a controllare che i dati passati siano nella forma che la nostra applicazione desidera.
Se per esempio abbiamo un campo che deve essere di 8 cifre altrimenti l’applicazione non funziona, vogliamo ben si controllare che questo dato sia corretto e, nel caso, avvisare l’utente che c’è un errore.
Casi comuni possono essere:
- Solo numeri e caratteri di punteggiatura?
- Solo testo?
- Possibilità obbligate come bianco, rosso o nero?
Sicuramente le regular expression sono la base di questi controlli. La regular expression è una sequenza di caratteri che definisce un pattern. Se la stringa o i numeri passati alla nostra applicazione passano la regular expression (ovvero rispettano il pattern), allora il dato è validato, altrimenti no e si avvisa l’utente.
Su questo sito puoi divertirti a testare la tua espressione.
Nel caso di una scelta obbligata, come bianco, rosso o nero, si può utilizzare un menu a tendina. Detto questo, se il modulo è in HTML e vogliamo essere sicuri al 100% che la scelta faccia parte di uno dei valori giusti, allora dobbiamo controllarla anche lato server, in quando l’HTML è facilmente modificabile in locale.
Cos’è il sanitize dei dati
Il sanitize è il processo di pulizia dei dati, ovvero un filtraggio nel quale i dati vengono passati e, nel caso modificati.
Nella validazione i dati venivano controllati e se non corretti si poteva chiedere all’utente di inserirli nuovamente, magari dicendogli dove aveva sbagliato.
In questo caso, invece, il dato che prendiamo lo modifichiamo secondo nostre precise regole.
Per esempio abbiamo un campo di testo che, una volta compilato, viene pubblicato su una pagina. Non vogliamo dare la possibilità all’utente di inserire dei link con l’utilizzo del tag <a href>
.
Il nostro sistema prenderà il testo toglierà tutti questi tag lasciando solo il testo. Non saranno quindi più dei link.
Un altro esempio potrebbe essere quello dei dati inseriti in un database. Se il dato che dobbiamo inserire proviene dall’esterno, allora va “preparato” nel senso che dobbiamo controllare che questa stringa di testo non contenga codice potenzialmente pericoloso.
Altrimenti basta uno user e password scritti con la sintassi SQL per avere un caso di query injection.
Altro caso è quello del cross site scripting, dove il testo passato dall’utente viene utilizzato nel tuo HTML a fini non simpatici.
Bisogna pertanto togliere dal contenuto passato dall’utente tutto quello che non riteniamo opportuno (escaping dei dati)
Quando fare l’escaping dei dati?
Ci sono diverse opinioni. Diciamo che farlo il più tardi possibile, come nel caso del HTML farlo giusto prima della fase di creazione del HTML, ti permette di sapere cosa è successo e risalire meglio ai responsabili dell’accaduto.
Come fare la validation ed il sanitize dei dati?
Come prima cosa dipende dal linguaggio che stai utilizzando.
Ogni linguaggio è diverso ed è possibile che ci siano delle build in function che già facciano quello che ti serve.
Seconda fattore è il framework o CMS che stai utilizzando.
Per esempio WordPress, sia per la validation che per il sanitize ha a disposizione un grande “parco macchine” pronto a tua disposizione.
Lascia un Commento
Vuoi partecipare alla discussione?Sentitevi liberi di contribuire!