Il primo di tre problemi ricorrenti nello sviluppo di webapp deriva dal corretto escaping dei dati inviati dal server al browser.
- Questo problema sorge laddove l'utente può inserire dei dati nella nostra webapp;
- non trattare opportunamente questi dati equivale a lasciare aperta la porta a malintenzionati;
- l'escaping infatti è la soluzione a vulnerabilità come il XSS (Cross Site Scripting) ;
- conoscerlo e saperlo gestire correttamente è essenziale per sviluppare webapp sicure;
In generale in una webapp va fatto l'escaping di tutto ciò che viene generato lato server e che poi viene interpretato dal browser.
Tutte le volte che si sta generando una pagina HTML da inviare al browser utilizzando dati provenienti dal database o dall'utente, bisogna chiedersi se e come bisogna farne l'escaping.
In particolare se si sviluppa in PHP bisogna conoscere per ogni elemento della pagina (html, css, javascript, …) che si sta creando, le apposite funzioni e gli appositi accorgimenti per effettuare l'escaping del contenuto.
Le funzioni della tabella seguente se utilizzate con gli opportuni accorgimenti possono essere la base per effettuare un corretto escaping.
elemento | funzione PHP |
HTML | htmlentities /htmlspecialchars |
valore degli attributi HTML | htmlentities /htmlspecialchars |
JavaScript | addslashes /json_encode |
URL/URI | rawurlencode /urlencode |
Se il framework che utilizziamo si preoccupa di effettuare correttamente l'escaping di questi elementi bene, diversamente ce ne dovremo occupare noi.