Integrità dei dati di contenuti dannosi nel database

4

Dal punto di vista dell'integrità dei dati, se mantengo il seguente codice nel mio database:

<script>
   alert('hi');  
</script>

dovrei sanitizzarlo prima di persistenza, ad esempio facendo < in &lt e poi nel recupero eseguendo la decodifica? O è più sicuro disinfettare solo sul recupero, ad esempio nell'interfaccia utente?

    
posta Woot4Moo 05.12.2013 - 18:07
fonte

1 risposta

9

Poiché gli attacchi di iniezione sfruttano le sequenze di controllo nel modo in cui l' output viene interpretato e poiché diversi formati di output utilizzano sequenze di controllo diverse (si pensi a JavaScript rispetto a SQL rispetto a HTML), la tecnica di sanitizzazione deve riflettere dove l'output sta andando Se si disinstalla per l'output al momento dell'input, si sta facendo una supposizione su dove verrà inviato quell'output, che potrebbe rivelarsi non corretto, forse a causa di alcune modifiche future o di alcuni casi di utilizzo che non si Pensa a.

Pertanto, di norma suggerirei di disinfettare l'output in modo da riflettere la specifica sensibilità di iniezione per il formato in cui si sta eseguendo l'output.

Si noti che se si memorizza un input preformattato e il contesto della formattazione non è disponibile in uscita (come la memorizzazione di HTML per un post di un blog), è possibile eseguire alcuni controlli su input , ma questo è uno scenario leggermente diverso rispetto alla semplice fuga generale.

Quindi di nuovo, di regola, sfuggi al tuo output piuttosto che ai tuoi input, ma fai delle eccezioni se necessario con la consapevolezza che quelle eccezioni devono essere guardate con un controllo extra mentre stai creando un buco nella tua app che devi attentamente guardia.

    
risposta data 05.12.2013 - 18:30
fonte

Leggi altre domande sui tag