È javascript HtmlEncode in uscita considerato pericoloso?

0

Ho letto qualche tempo fa che htmlEncoding in javascript è un no-go. Ma questo è il caso quando codifichi per la prima volta i dati e poi li salvi in db (per esempio). In questo caso, ti basti solo su javascript per eseguire la codifica e vedo perché questo è pericoloso.

Ma quando si salvano gli input dell'utente nel database così com'è e facendo htmlEncode in output, ha senso solo htmlEncode sul server e si consideri pericoloso javascript htmlEncoding?

    
posta Ciocoiu Alin 03.06.2017 - 21:29
fonte

2 risposte

2

A volte ha senso codificare HTML in Javascript e non è necessariamente pericoloso.

Ad esempio, se hai un'API che restituisce JSON, va bene se l'API restituisce stringhe non elaborate. Solo quando metti queste stringhe sulla pagina con Javascript, devi codificarle in HTML.

Dato che questo è un comportamento lato client, un utente malintenzionato può ignorarlo e rimuovere la codifica. Tuttavia, questo gli consente solo di attaccare il proprio browser. XSS è in genere pericoloso se uno script può essere eseguito nel browser di qualcun altro .

    
risposta data 04.06.2017 - 15:40
fonte
0

È una pratica consolidata per:

  1. Filtra input prima di utilizzare / archiviare - non "salvare gli input utente così com'è".
  2. Codifica l'output prima di visualizzarlo, indipendentemente dal fatto che tu lo prenda dal tuo database o dall'input dell'utente.

La codifica scelta dipende dal contesto in cui si posiziona l'output. Per un semplice contesto HTML, htmlEncode ha ragione.

A volte ti imbatti in un caso d'uso in cui codifichi anche l'input prima di memorizzarlo (editor di commenti come quello che sto usando qui ora). Se stai eseguendo la codifica, non dovrebbe importare quale lingua utilizzare (JS o altrimenti).

Ovviamente, JavaScript è usato sia su lato client che su server. Se ti stai affidando a solo sul lato client per eseguire il tuo lavoro relativo a #appsec (codifica in questo caso), che potrebbe essere rischioso, non perché sia JS, ma perché è lato client.

    
risposta data 04.06.2017 - 05:36
fonte

Leggi altre domande sui tag