È sicuro ottenere dati codificati in html dal database per prevenire l'attacco XSS memorizzato?

0

per motivi di sicurezza ora sto recuperando tutti i dati dal database con il formato htmlEncoded. è corretto? per favore aiuto ..

    
posta vishal9796 05.05.2018 - 15:05
fonte

2 risposte

2

Funziona per i dati che visualizzi come HTML, ma solo per alcune aree di HTML, e questa non è la migliore pratica.

Vuoi codificare i dati per il contesto specifico in cui sono utilizzati o visualizzati, il che significa che dovresti codificarli correttamente nel momento in cui li stai utilizzando o mostrandoli. Codificarlo non è una buona pratica, dal momento che non si sa come sarà usato, e porterà a doppia codifica o codifica per il contesto sbagliato. Probabilmente stai codificando per gli attributi HTML. Ma questi dati potrebbero essere usati per elementi HTML, javascript, URL o magari utilizzati in altri contesti, come essere reinseriti nel database.

Vedi il foglio di trucchi OWASP XSS per come codificare per vari contesti HTML.

È un modello comune per codificare in modo aggressivo per HTML mentre esce dal DB, come si fa qui - o un altro pattern simile è codificato quando i parametri vengono estratti dal contesto del servlet. Sembra più sicuro e per le app legacy può essere un modo per aggiornare rapidamente il codice. Ma, in applicazioni complesse, può portare a problemi funzionali o scarsa sicurezza. Ho visto diversi casi in cui le funzioni di output comuni prevedono che le stringhe siano già codificate, ma molte delle chiamate alle funzioni provengono da altri contesti che passano stringhe non codificate.

Se prosegui con la "codifica aggressiva", devi chiaramente denominare e documentare quali funzioni prevedono le stringhe codificate e non codificate.

    
risposta data 06.05.2018 - 18:47
fonte
1

Sì e no. È corretto farlo per i dati che visualizzi come HTML. Ma potrebbero esserci altri usi per i tuoi dati, in cui la codifica HTML potrebbe non essere adeguata. Ad esempio, se si elaborano i dati, la codifica potrebbe causare problemi. D'altra parte, se per esempio metti i dati in javascript, potresti dover usare una codifica diversa.

Inoltre, se usi PHP o una lingua in cui la codifica html funziona in modo simile, potresti usare il flag ENT_QUOTES per sfuggire anche al carattere ' .

    
risposta data 05.05.2018 - 16:00
fonte

Leggi altre domande sui tag