È un rischio per la sicurezza se l'utente inserisce caratteri html in una casella di testo e si riflette nella pagina successiva in un sito Web? (non tag script)

4

Nel mio sito web ho una casella di testo in cui l'utente può inserire ciò che vuole e il testo viene stampato nella pagina successiva. Per alcuni casi, possono digitare tag HTML per formattare il loro messaggio in modo che nella pagina successiva del sito Web le cose possano essere evidenziate in grassetto, in un elenco, in corsivo, ecc., Ma i tag di script non sono consentiti a causa delle vulnerabilità XSS.

Al momento permetto al tag <a> di essere riflesso, quindi posso digitare nella casella di testo <a href=https://google.ca>sample_link</a> e nella pagina successiva se l'utente fa clic sul testo sample_link , verranno reindirizzati a google.ca .

Ho letto se è possibile ottenere un virus semplicemente visitando un sito Web e in base a questa risposta: Puoi ottenere virus visitando un sito Web in Chrome? e molti altri, sembra possibile. Quindi, assicurati che l'utente non abbia inserito google.ca e invece un URL dannoso, quindi se fa clic su quel collegamento il suo computer può essere infettato o potrebbe verificarsi qualche altro attacco.

Quello che voglio sapere è se questo è davvero un problema, dal momento che ora sembra che l'unico modo per questo sia un problema è se l'utente stesso inserisce questo link dannoso e fa clic su di esso. Quindi c'è un modo per un utente malintenzionato di sfruttare il fatto che questo tag <a> viene riflesso? Immagino che un modo è che se quello che qualcuno entra in una casella di testo viene riflesso in una pagina che tutti possono vedere, allora altri utenti possono fare clic su questo link, ma ciò significherebbe siti come StackOverflow e altri forum "non sicuri".

Sarebbe bello se qualcuno potesse far luce su questa situazione. Grazie in anticipo!

Modifica

Ho una serie di tag autorizzati a cui è consentito riflettere. Eccoli:

"a", "b", "blockquote", "br", "cite", "code", "dd", "dl", "dt", "em", "i", "li", "ol", "p", "pre", "q", "small", "span", "strike", "strong", "sub", "sup", "u", "ul"
    
posta Michael 15.08.2017 - 18:52
fonte

1 risposta

8

things can be bolded, in a list, italicized, etc, but script tags are not allowed due to XSS vulnerabilities.

Non è sufficiente, il tuo sito è ancora vulnerabile a XSS .

Ecco alcuni esempi XSS che non richiedono tag <script> :

  • <svg onload="alert(document.domain)">
  • <img src="x" onerror="alert(document.domain)">
  • <body onload="alert(document.domain)">
  • <iframe src="javascript:alert(document.domain)">
  • ...

In conclusione: non è possibile prevenire in modo affidabile XSS inserendo nella lista nera determinati tag. Al contrario, è necessario implementare una whitelist rigida di tag e attributi consentiti.

Anche se permetti solo i tag <a> , rimani ancora con XSS tramite pseudo protocolli. Per esempio:.

<a href="javascript:alert(document.domain)">Click me</a>

Tuttavia, se si consentono solo collegamenti con http[s]:// URL, non si sta creando un rischio immediato per il proprio sito oltre a consentire alle persone di specificare collegamenti a siti potenzialmente dannosi (o semplicemente spam). Come hai affermato correttamente, questo è un rischio che molti siti Web sociali, tra cui SE, sono disposti a prendere.

    
risposta data 15.08.2017 - 19:08
fonte

Leggi altre domande sui tag