flawopen.com/xss/Ruby
Learn how to fix Cross-Site Scripting (XSS) (CWE-79) in Ruby. Side-by-side vulnerable vs secure code examples for Rails ERB, raw() vs sanitize(), and safe_join.
Imaginez coller une note sur le panneau d'affichage du hall disant : 'Toute personne lisant ceci doit donner son portefeuille à la personne à côté d'elle'. Si les visiteurs obéissaient aveuglément à chaque note punaisée, n'importe qui pourrait voler l'argent de tout le monde.
Web Application SecurityCWE-79.CWE-79Defense-in-DepthL'attaquant soumet des balises HTML ou des scripts JavaScript (ex. <script> ou <img onerror=...>) via des formulaires ou paramètres.
L'application injecte l'entrée brute dans la réponse HTML sans encodage adéquat des entités HTML.
Lorsque la victime charge la page, son navigateur interprète le texte comme du code exécutable plutôt que du texte brut.
Le script malveillant s'exécute dans le contexte de la victime et vole les cookies d'authentification ou les jetons de session.
<%# html_safe skips escaping &%>
<div>
<%= @comment.body.html_safe %>
</div>
<%# ERB output auto-escapes by default &%>
<div>
<%= @comment.body %>
</div>
raw() on untrusted data.