Sto lavorando su un progetto sito Web ASP.Net C# + jQuery ajax. Sto cercando di prevenire gli attacchi xss e so che di seguito non è l'approccio completo, ma questo è almeno quello che dovrei fare - per usare HtmlEncode quando si accetta la stringa libera dagli utenti). E io davvero qualcuno che controlli gentilmente se sto facendo la cosa giusta.Prevenire attacco XSS
Quindi supponiamo di avere uno scenario per il quale uno dei controlli di pagina è una casella di testo "Descrizione" e gli utenti possono immettere una stringa "libera" utilizzata per descrivere il loro prodotto. Per evitare di ottenere input di attacco xss, nel Metodo pagina lato server, ho concluso il testo "Descrizione" utilizzando HtmlUtility.HtmlEncode()
, quindi la stringa verrà interpretata come testo puro prima di passare al database, ovvero <script>
diventa >script<
.
La parte che segue è quello che sono in dubbio: come gestire il testo codificato in html prima di restituirlo all'utente?
Quando l'utente desidera visualizzare il testo della descrizione immesso, il sito Web recupera dal database e lo stampa.
È logico eseguire la decodifica html nella descrizione in modo che l'utente non veda quei caratteri Wierd ><
? In primo luogo, sconfiggerà lo scopo di usare HtmlEncode? E se sì, è questa la linea jQuery corretta per decodificare e stampare il testo agli utenti ???
$("#txtDescription").val($(this).html(obj.Description).text();
Grazie molto molto
Ciao Kolink, grazie per la tua risposta :). Sarebbe meglio salvare il testo nel database con la sua forma grezza non filtrata, ma poi il mio sistema richiederà che avvenga il wrapping prima di entrare nel database, e in entrambi i casi, quello che non sono sicuro è come stamparlo di nuovo l'utente – user1487182
Dovremmo stampare i caratteri strani agli utenti o è prassi normale decodificare i caratteri prima di stampare? Se sì, come gestire quella parte? Ho bisogno di stampare quei valori torna a caselle di testo e sta mostrando le cose come " > <sceneggiatura> avviso (' XSS ') </script > Grazie mille – user1487182
Sarebbe utile se qualcuno affermare cui non si dovrebbe codificare testo che entra nel database ... soprattutto perché la risposta ha 5 voti positivi (il più nella pagina). – EleventyOne