Quelles sont les pratiques pour prévenir les XSS dans Ruby sur des rails?
J'ai trouvé de nombreux vieux documents sur le Web et la plupart du temps consistaient à utiliser
h / html_escape strong> assistant pour échapper à toute variable issue d'utilisateurs. p>
J'ai compris de nouveaux docs que dans la version 2.0 et plus, il y a
Sanitize Strort> méthode qui nettoie automatiquement l'entrée de soi-disant
Entrée malveillante. Est-ce assez ou faites-vous quelque chose de plus pour sécuriser votre
Applications? P>
4 Réponses :
Le Guide de sécurité Ruby On Rails est assez approfondi sur les problèmes spécifiques aux rails que vous devriez devoir Considérez lors de la conception de la sécurité de votre site Web. P>
La méthode h code> est toujours la voie à suivre pour échapper à tout HTML à l'intérieur d'une chaîne. Vous devez utiliser cette méthode partout où vous émettez du contenu.
<%= sanitize @recipe.description, :tags => %w[b i a], :attributes => %w[href] %>
En ce qui concerne les meilleures pratiques, je recommanderais ce qui suit: P>
Utilisez toujours les aides de formulaire RAILS (form_for, etc.), si vous écrivez votre propre formulaire, vous ouvrez des attaques CSRF. P> LI>
en utilisant la fonction H () échappera au texte tel qu'il est écrit sur une page, vous allez toujours vous retrouver avec des exploits XSS enregistrés dans votre base de données. Utilisation de XSSS_TERMINATE Bandes de plugin Entrée tel qu'il est enregistré. p> li>
N'oubliez pas que votre application s'exécute sur une pile d'autres applications (rails, Apache, MySQL, votre système d'exploitation de choix), chacun ayant ses propres problèmes de sécurité. p> li> ol>
La méthode des rails désinfectant est plutôt bonne, mais elle ne garantit pas bien la formation, et elle est assez susceptible d'être attaquée en raison de la base d'installation. Une meilleure pratique consiste à utiliser HTML5Lib (vraiment le meilleur, sinon le plus rapide ou le plus rubish) ou Sanitize ou LOOFAH P>