J'ai commencé à utiliser Ruby sur rails, et je me demandais s'il y avait une sécurité Gotchas à faire attention aux rails, en particulier en ce qui concerne l'injection de code et les XSS?
Je sais Rails essaie d'empêcher de telles attaques en assainissant des intrants, mais je suppose que cela ne peut pas être infaillible.
Rails 3 a des très bonnes protections activées par défaut qui attraperont beaucoup de problèmes de sécurité commune.
Spécifiquement l'encodage de sortie aidera à atténuer les attaques XSS, les jetons CSRF sont activés par défaut sur toutes les formes qui devraient aider ici, et aussi longtemps que vous l'utiliserez correctement ActiveCord ou d'autres ormes peuvent aider à atténuer l'injection SQL.
Sur la validation d'entrée avant, il y a évidemment des choses à surveiller. Rails Ne ferez pas la validation de l'entrée pour vous par défaut, de sorte que si les données entrées dans votre application sont transférées dans d'autres applications Web, il reste encore le risque d'attaques XSS survenant.
Cela dit, Rails prend des validations dans le modèle et je recommanderais de faire une validation de la liste blanche de l'entrée là-bas, si possible.
Sur le front d'injection SQL, il est toujours possible d'utiliser SQL brut avec Activerecord et, si vous le faites, les problèmes habituels avec l'injection SQL peuvent survenir, alors encore une fois la validation de liste blanche de toutes les entrées est utile.
Au-delà de cela, il y a encore plusieurs choses à surveiller. L'installation de la base Rails ne fournit pas d'autorisation/d'authentification, de sorte que soit à provenir d'un plugin ou d'être écrite par le développeur.
Un inconvénient des URL de style reposant que l'application Rails produira généralement est qu'il est généralement facile pour un attaquant d'essayer de briser l'autorisation en modifiant l'URL. Par exemple, une URL de http: // mySite/utilisateurs/1 Affiche le premier utilisateur, pourrait être facilement modifié pour avoir un 2 ou plus. Ce n'est pas que c'est moins en sécurité, mais cela facilite la tâche des attaquants de contourner les contrôles d'autorisation.
Il y a quelques bonnes sources d'informations pour la sécurité Rails qui valent la peine d'être lu pour plus d'informations.
The Owasp Rails Guide de sécurité est ici et il y a aussi un livre Sécurité sur rails des programmeurs pragmatiques qui se concentrent sur Rails 2.3 a toujours beaucoup de bonnes informations à considérer (noter que la sécurité sur Rails est désormais épuisée).
Le Feuille de triche Owasp XSS est une excellente ressource pour comprendre tous les moyens que XSS peut arriver:
Tous les règles ci-dessus ne sont pas pris en charge par Rails automatiquement et cela dépend de la version:
Rails 3.x = "Si une chaîne ordinaire est transmise à un <% =%>, Rails vous échappe toujours"
Rails 2.x = Vous devez utiliser h() méthode (ou utilisez quelque chose comme Sniper du site croisé ou Safe Erb )
La liste blanche règle la journée: si vous vous attendez à une abréviation postale américaine de deux lettres, utilisez alors des validations pour accepter uniquement cela.
Guide de sécurité générale: http: //guides.rubyonRails.org/security.html