È molto importante per te capire che TUTTI gli input degli utenti devono essere disinfettati in un modo o nell'altro, o che si sta aprendo potenzialmente per delle falle nella sicurezza.
Qualsiasi input potrebbe significare caselle a discesa o altri dati che si penserebbero statici. Esempi di questo è semplicemente qualsiasi cosa restituita dall'utente come ad esempio:
- Pulsanti di opzione
- Casella a discesa
- Dati provenienti da plug-in come flash, silverlight e così via.
- Semplicemente tutto ciò che viene inviato al client!
Per illustrare meglio questo aspetto, ti incoraggio a scaricare un semplice proxy che ti consentirà di mostrare tutti i dati inviati al tuo server quando invii un modulo. Qui viene mostrata una richiesta POST di esempio:
POST /api/rest HTTP/1.1
Host: api.example.com
User-agent: Googlebot/2.1 (+http://www.google.com/bot.html)
Referer: example.com/admin.php
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Cookie: username=karrax&password=855425718dfe4a50f6f0bbb9335d3c3b&userid=591
dropdownBox=string&staticTextField=string&hiddenElement=string
Tutto ciò che devi fare affidamento sulla tua logica di business proveniente dal lato client deve essere pulito .
Ricorda che questo vale per qualsiasi cosa venga dal lato client. NON PUOI FIDARTI! ... Anche se è semplicemente una stringa che viene restituita al client (ad esempio un nome utente), dovrebbe essere pulita in modo che non sia vulnerabile per lo scripting cross-site e altri vettori di attacco.
Modifica : come sottolineato da @Avid nei commenti, è anche fondamentale sapere che i dati trasmessi attraverso i cookie vengono inviati anche dal lato client, rendendoli vulnerabili alle manomissioni. Questo vale anche per qualsiasi altro campo nelle intestazioni (o qualsiasi cosa proveniente dal client) come il campo utente-referente o referente per nominarne alcuni.
Nell'esempio sopra la richiesta HTTP potrebbe sventare alcuni sistemi di sicurezza se si affidano al campo referrer per autorizzare ad esempio l'utente. L'esempio mostra anche che è il Google Bot che in alcune circostanze può fornire contenuti diversi nella pagina che stai richiedendo ( fonte ).