Je suis en train de construire une application web avec Rails 4 strong parameters.
Lors de la construction des contrôleurs du back-office admin, je me demande quelle est la meilleure façon d'autoriser tous les attributs du modèle ?
Pour l'instant, j'ai écrit ceci :
def user_params
params.require(:user).permit(User.fields.keys)
end
Vous pensez à un meilleur moyen ?
0 votes
Pourquoi ? Je ne fais ce genre de choses que dans mon backoffice d'administration où je fais confiance à tous les utilisateurs.
1 votes
Ce n'est pas parce que vous leur faites confiance (et vous ne devriez pas, mais c'est une autre histoire) que le fait de laisser toutes vos données ouvertes à l'écrasement est une faille de sécurité qui ne demande qu'à être exploitée.
0 votes
Un principe important en matière de sécurité est l'idée de mettre sur liste blanche les éléments que vous souhaitez explicitement rendre disponibles. En établissant une liste explicite, vous évitez des problèmes comme lorsque vous (ou un collègue) introduisez une nouvelle clé dans votre code et que vous vous attendez à ce qu'elle ne soit disponible que par le biais du contrôleur si vous effectuez des actions explicites. En d'autres termes, respectez les conventions, sauf si vous avez une très bonne raison de ne pas le faire. Presque chaque fois que je l'ai fait dans le passé, je me suis tiré dans le pied.
2 votes
@sevenseacat au moins il demande s'il y a une meilleure façon de le faire.
1 votes
@AndrewGrimm oui, mais il veut toujours tout autoriser par défaut, ce qui est une chose peu sûre à faire et annule complètement l'intérêt des paramètres forts.
0 votes
@sevenseacat, que se passe-t-il si je ne veux faire qu'avec certains des contrôleurs et que je ne veux pas taper toutes ces touches ?
5 votes
@Anwar "parce que je ne peux pas prendre la peine de taper les touches" est probablement la pire raison pour contourner une mesure de sécurité.