C'è qualche pericolo nel rendering di HTML immesso dall'utente e può essere mitigato?

-1

Immagino che la risposta sia no, perché ci sono alcuni esempi, incluso qui. Se permetto agli utenti di inviare il proprio testo HTML e quindi di renderlo uno accanto all'altro, cosa potrebbe fare l'utente per rompere il resto della pagina e come posso proteggerlo?

Immagino che sfuggire l'input non appena entrano sarebbe una buona idea, quindi sfuggire mentre sto eseguendo il rendering, oltre a rimuovere <script> tag, ma a parte quello che dovrei prendere per precauzioni ?

    
posta leylandski 20.11.2015 - 10:58
fonte

2 risposte

4

Si desidera utilizzare un approccio di whitelisting, in cui si accetta solo una buona sintassi html, invece di rimuovere i contenuti dannosi noti. Non esiste un modo affidabile per rimuovere contenuti dannosi, tranne il rifiuto di tutto ciò che non si sa per certo è sicuro. Non utilizzare espressioni regex, non provare a caricare il proprio codice, utilizzare una buona libreria di disinfezione html. Le librerie che fanno ciò in genere analizzano l'HTML in un DOM, rimuovono tutti i tag e gli attributi non inseriti nella whitelist e quindi serializzano nuovamente il DOM in HTML.

Esempi di librerie di disinfezione html che utilizzano una whitelist policy sono OWASP Java HTML Sanitizer e PHP HTMLPurifier .

    
risposta data 20.11.2015 - 11:38
fonte
1

Dovresti prendere in considerazione la possibilità di disinfettare i dati html di input dall'utente prima del rendering sulla pagina web.

  • Spoglia i tag di script o HTML codificali, in modo che l'utente sia consapevole di aver inserito i tag indesiderati.

  • Strip | HtmlEncodifica anche i tag iframe. Potrebbero diventare maliziosi, se l'utente finale sta cercando di malignare la tua pagina web.

  • Strip | HtmlEncodifica i tag di input

  • Probabilmente puoi usare regex sul lato server per eliminare anche questi tag speciali. O utilizza il HTML Agility Pack per navigare all'interno degli elementi html e amp; puliscile dal lato server.

  • Renderizza l'html nella nuova pagina piuttosto che nella pagina esistente nella tua applicazione. Almeno questo proteggerà le tue pagine web esistenti. OPPURE rendere questo html personalizzato nell'iframe all'interno della pagina Web esistente. Ciò ti aiuterà a contenere tutte le implicazioni sconosciute all'interno dell'area confinata.

risposta data 20.11.2015 - 11:17
fonte

Leggi altre domande sui tag