Sviluppo software

Problematiche ricorrenti nello sviluppo di webapp 1/3: escaping

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.

elementofunzione PHP
HTMLhtmlentities /htmlspecialchars
valore degli attributi HTMLhtmlentities /htmlspecialchars
JavaScriptaddslashes /json_encode
URL/URIrawurlencode /urlencode

Se il framework che utilizziamo si preoccupa di effettuare correttamente l'escaping di questi elementi bene, diversamente ce ne dovremo occupare noi.

Autore: Giovanni Chiodi
Senior software developer con più di 13 anni di esperienza nello sviluppo di soluzioni web based, enterprise, su misura. Dal 2011 socio fondatore di Garda Informatica Snc condivide questa avventura col fratello Lorenzo.

Che soluzione cerchi?#

Read more!

Newsletter

Ti è piaciuto questo articolo? Iscriviti alla newsletter

Di tanto in tanto pubblichiamo nuovi articoli come questo. Se vuoi essere avvisato lascia il tuo indirizzo e-mail di seguito.

Non invieremo mai SPAM e non condivideremo la tua e-mail con altri. Per maggiori informazioni consulta la privacy policy.

Attendere prego...

closeIcona closesearchIcona searchmore vertIcona more vertmenuIcona menushareIcona sharelinkIcona linkarrow upwardIcona arrow upward