0Pricing
Ruby Academy · Leçon

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)
end

Utiliser 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)
end

Pourquoi une méthode privée ?

Conserver la liste blanche dans une seule méthode privée signifie que :

  • create et update partagent 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::ParameterMissing

permit! 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 role ou admin depuis 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é.
  • require exige 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

  1. Routes et ressources
  2. Contrôleurs et actions
  3. Paramètres forts
  4. Vues et rendu
← Retour à Ruby Academy