Domanda

Sto cercando di trovare il modo di sanificare l'ingresso del WMD editore.

In particolare, sto cercando di rendere i tag HTML disponibili solo nelle <code>tags che WMD genera. È quello possibile

Il mio problema è che il codice seguente è reso come HTML, che è vulnerabile a potenziali XSS attacchi .

Per esempio, <a onmouseover="alert(1)" href="#">read this!</a>

Il codice di cui sopra rende normalmente sia in modalità di anteprima e quando vengono salvati nel database.

Ho notato che Stack Overflow non sembrano avere questo problema. Lo stesso codice è solo visualizzato come testo.

Ho notato che la squadra Stack Overflow ha condiviso il proprio codice in http://refactormycode.com / codici / 333-disinfettare-html . Devo davvero usare C # per WMD Disinfettare per fare questo?

È stato utile?

Soluzione

Ho finito per usare HTML Purifier per questo.

Altri suggerimenti

Se si desidera bloccare i cattivi script da ADM sul lato client, dare un'occhiata alla mia risposta qui: Allineare del redattore WMD anteprima HTML con la convalida HTML lato server (ad esempio non incorporato codice JavaScript) .

Si mostra come implementare un lato client whitelist nell'editor WMD per limitare del riquadro di anteprima HTML al noto sicuri elementi HTML e gli attributi HTML noto sicuri WMD. Lo fa la convalida dopo WMD geneates sua HTML, quindi, anche se c'è un bug nella generazione HTML del redattore WMD che permette cattivo script per ottenere attraverso, il blocco sarà whitelist prenderlo. Questo codice è basato su di StackOverflow.com attuazione della stessa convalida.

Detto questo, è necessario anche la validazione lato server troppo (Se si sta utilizzando PHP, HTML Purifier è una buona scelta), perché anche se si fissa il cliente, che non impedisce un utente malintenzionato di simulare un browser e risparmio markdown dannoso da POST-ing al vostro server. Così facendo sul lato client WMD previewer convalida non è effettivamente necessaria, se non per difendersi da un caso oscura cui un utente malintenzionato riesce ad ottenere compromessa Markdown sul server, e convince un moderatore del sito di modificare la pagina. In tal caso, cliente WMD previewer convalida potrebbe impedire a un utente malintenzionato di prendere il controllo l'intero sito.

Inoltre, facendo convalida lato client può essere utile perché poi si sa che gli stessi tag e HTML consentito dal cliente sarà inoltre consentito sul server. Assicurati di sincronizzazione lato server whitelist con il cliente whitelist. di StackOverflow whitelist è qui se si vuole un esempio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top