Im usando jQuery Markitup per consentire agli utenti di inserire html ... In modo che possano roba ingresso come:Come uscire da html?
<h1>Foo</h1>
<p>Foobar</p>
Tuttavia, stavo guardando http://railscasts.com/episodes/204-xss-protection-in-rails-3 e deciso di provare questo pezzo di codice all'ingresso:
<script>alert('test');</script>
Con mia grande sorpresa, quando ho inviato il modulo e aggiornato la pagina, è uscito il riquadro di avviso. Questo è un rischio per la sicurezza!
Questo è quello che ho in mio punto di vista:
<div><%= comment.description.html_safe %></div>
È possibile che questo rende qualsiasi html, ma è anche soggetta a XSS. Così ho provato:
<div><%= html_safe(comment.description).html_safe %></div>
ma quanto sopra non rende alcun html. In realtà visualizza l'html come text, che non è il comportamento desiderato.
Ho bisogno di rendere l'html e allo stesso tempo di proteggermi da xss. Come faccio a fare questo?
Yea disinfettare esegue il rendering html, e non esegue l'avviso dal JS. Interessante. Ma quali implicazioni ha questo? Stavo guardando http://railscasts.com/episodes/27-cross-site-scripting e Ryan B afferma che "non è così approfondito, dal momento che non sfugge ad ogni tag html, che non è altrettanto sicuro". .. –