Paramètres forts
Paramètres sûrs
Paramètres forts est une leçon Ruby Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Ruby Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Ruby Academy comprend 4 leçons au total.
Le problème de l'affectation de masse
Les formulaires envoient de nombreux champs à la fois. Si vous les transmettez tous à un modèle sans vérification, un attaquant pourrait ajouter des champs que vous n'aviez jamais prévus, par exemple en définissant admin: true. Il s'agit de la vulnérabilité d'affectation de masse.
- Les données fournies par l'utilisateur ne sont jamais fiables.
- Vous devez créer une liste blanche des champs autorisés.
- Rails applique cette règle avec les paramètres forts.
Que sont les paramètres forts ?
Les paramètres forts vous obligent à déclarer explicitement les paramètres qu'un modèle peut accepter. Rails lève une erreur si vous essayez d'affecter en masse des paramètres qui n'ont pas été autorisés.
Une faille de sécurité silencieuse devient ainsi une liste de champs autorisés, activée explicitement et vérifiée.
require et permit
Le schéma utilise deux méthodes :
require(:model)vérifie que la clé de premier niveau existe.permit(:field, ...)crée une liste blanche des champs internes.
def article_params
params.require(:article).permit(:title, :body)
endUtiliser l'assistant
Définissez une méthode privée model_params et appelez-la lors de la création ou de la mise à jour. Ne transmettez jamais directement params à un modèle.
def create
@article = Article.new(article_params)
@article.save
redirect_to @article
end
private
def article_params
params.require(:article).permit(:title, :body)
endPourquoi une méthode privée ?
Conserver la liste blanche dans une seule méthode privée signifie que :
createetupdatepartagent les mêmes règles.- Les champs autorisés sont faciles à trouver et à vérifier.
- La méthode n'est pas exposée comme une action de contrôleur (les méthodes privées ne peuvent pas être associées à une route).
Ce qui est filtré
Toute clé envoyée qui ne figure pas dans la liste permit est supprimée avant d'atteindre le modèle. Si un formulaire contient par exemple admin, mais que vous n'autorisez que title et body, la valeur de admin est ignorée silencieusement, ce qui protège l'enregistrement.
Autoriser des tableaux
Pour les listes de cases à cocher ou les sélections multiples qui envoient des tableaux, autorisez-les en transmettant un tableau vide comme valeur. Cela permet plusieurs valeurs pour cette clé.
params.require(:article).permit(:title, tag_ids: [])Autoriser des hachages imbriqués
Pour les attributs imbriqués (un formulaire qui modifie un parent et ses enfants en une seule fois), autorisez les clés imbriquées avec un hachage décrivant les champs internes.
params.require(:order).permit(
:customer_name,
items_attributes: [:product_id, :quantity]
)Gérer les paramètres manquants
Si la clé obligatoire est absente, require lève ParameterMissing, que Rails affiche comme une erreur 400 de requête incorrecte. Les actions sont ainsi automatiquement protégées contre les requêtes mal formées.
# Missing :article key raises:
# ActionController::ParameterMissingpermit! est dangereux
Vous pouvez appeler params.permit! pour tout autoriser, mais cela rouvre la faille d’affectation en masse. Évitez cette pratique, sauf dans des contextes internes de confiance. Préférez toujours une liste blanche explicite.
Bonnes pratiques
Sécurisez les paramètres :
- Autorisez la liste minimale de champs.
- N’autorisez jamais des indicateurs sensibles comme
roleouadmindepuis un formulaire public. - Définissez explicitement ces champs dans le contrôleur selon la logique côté serveur.
Vérification rapide
Vérifiez votre compréhension des paramètres forts.
Récapitulatif : paramètres forts
Vous avez appris à filtrer les entrées en toute sécurité :
- L’affectation en masse constitue un véritable risque de sécurité.
requireexige la clé principale ;permitétablit une liste blanche de champs.- Conservez la liste blanche dans une méthode privée partagée.
- Autorisez les tableaux et les hachages imbriqués lorsque cela est nécessaire.
- Évitez
permit!et n’autorisez jamais les indicateurs sensibles.
Nous allons maintenant renvoyer des réponses avec des vues et le rendu.
Questions Fréquemment Posées
La leçon « Paramètres forts » est-elle gratuite ?
Oui — le texte complet de « Paramètres forts » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Ruby Academy, passe à CoddyKit PRO. Le cours Ruby Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Paramètres forts » ?
Paramètres sûrs Tu pratiques Ruby Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Ruby Academy ?
Aucune expérience préalable n'est requise. Ruby Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Paramètres forts » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Ruby Academy ?
Oui. Chaque leçon Ruby Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Routes et ressources
- Contrôleurs et actions
- Paramètres forts
- Vues et rendu