Domanda

Qual è la soluzione migliore per disinfettare l'output HTML in Rails (per evitare attacchi XSS)?

Ho due opzioni: plugin white_list o metodo sanitize da Sanitize Helper http: //api.rubyonrails.com/classes/ActionView/Helpers/SanitizeHelper.html . Per me fino ad oggi il plugin white_list ha funzionato meglio e in passato Sanitize era molto difettoso, ma come parte del Core, probabilmente sarà in fase di sviluppo e sarà supportato per un po '.

È stato utile?

Soluzione

Penso che il metodo h helper funzionerà qui:

<%= h @user.profile %>

Questo eviterà le parentesi angolari e quindi neutralizzerà qualsiasi JavaScript incorporato. Naturalmente questo eliminerà anche qualsiasi formattazione che i tuoi utenti potrebbero usare.

Se vuoi formattare, forse guarda markdown.

Altri suggerimenti

Personalmente penso che non sia una piccola decisione accettare qualsiasi voce HTML in qualsiasi app web. Puoi testare i tag nella lista bianca / nera quanto vuoi, ma a meno che tu non stia testando l'annidamento corretto, qualcuno potrebbe inserire una serie di tag di chiusura, ad esempio

</td></tr></span></div>

e rovina davvero il tuo layout.

Solitamente darei alle persone qualcosa come Textile per inserire il loro markup, poiché preferirei passare il tempo a lavorare sulla logica aziendale piuttosto che sull'analisi HTML.

Ovviamente, se questa voce di testo è più fondamentale per la tua app (come ad esempio per StackOverflow), probabilmente dovresti prestare maggiore attenzione a far scorrere manualmente la tua.

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