Domanda

Sto utilizzando un editor di testo RTF su una pagina web..NET ha funzionalità che impediscono di pubblicare tag HTML, quindi ho aggiunto uno snippet JavaScript per modificare le parentesi angolari e la coppia di caratteri alias prima del post.L'alias viene sostituito sul server con la parentesi angolare necessaria e quindi memorizzato nel database.A parte XSS, quali sono i modi comuni per risolvere questo problema.(cioè.C'è un modo migliore?)

Se hai commenti su XSS (cross-site scripting), sono sicuro che aiuterà qualcuno.

È stato utile?

Soluzione

In realtà c'è un modo per disattivare quella "funzione".Ciò consentirà all'utente di pubblicare qualsiasi carattere desideri e non sarà necessario convertire i caratteri in un alias utilizzando Javascript.Vedi questo articolo per disabilitare la convalida della richiesta.Significa che dovrai fare la tua convalida, ma dal suono del tuo post, sembra che sia quello che stai cercando di fare comunque.Puoi anche disabilitarlo per pagina seguendo le istruzioni qui.

Altri suggerimenti

Penso che il modo più sicuro sia NON consentire all'utente di creare tag con WISYWIG.Forse usando qualcosa come un editor di markdown come su questo sito o disponibile qui. sarebbe un altro approccio.

Mantieni inoltre la direttiva Page ValidateRequest=true che dovrebbe impedire l'invio del markup nella richiesta, ovviamente dovrai gestire questo errore quando si presenta.Le persone saranno sempre in grado di inserire tag nella richiesta in entrambi i casi utilizzando estensioni di Firefox come Dati di manomissione, ma ValidateRequest=true dovrebbe almeno impedire ad ASP.NET di accettarli.

Jeff ha recentemente scritto un post diretto sugli attacchi XSS qui.Si parla anche di rendere i tuoi cookie HttpOnly, che è una semi-difesa contro il furto di cookie.Buona fortuna!

Il mio primo commento sarebbe quello di evitare di utilizzare JavaScript per modificare le parentesi angolari.Aggirare questo problema è semplice come disabilitare JavaScript nel browser.Quasi tutti i linguaggi lato server hanno qualche metodo di utilità che converte alcuni caratteri HTML nelle loro controparti entità.Ad esempio, PHP utilizza htmlentities() e sono sicuro che .NET abbia un metodo di utilità equivalente.Come minimo, puoi sostituire le espressioni regolari per parentesi angolari, parentesi e virgolette doppie, e questo ti porterà molto lontano verso una soluzione sicura.

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