Strong Parameters
Sichere Parameter
Strong Parameters ist eine kostenlose Ruby Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Ruby Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Ruby Academy-Kurs umfasst insgesamt 4 Lektionen.
Das Problem der Massenzuweisung
Formulare senden viele Felder auf einmal. Wenn Sie sie blind an ein Model übergeben, könnte ein Angreifer Felder hinzufügen, die Sie nie vorgesehen haben, etwa admin: true setzen. Dies ist die Sicherheitslücke der Massenzuweisung.
- Benutzereingaben sind niemals vertrauenswürdig.
- Sie müssen zulässige Felder auf eine Whitelist setzen.
- Rails erzwingt dies mit Strong Parameters.
Was sind Strong Parameters?
Strong Parameters verlangen, dass Sie ausdrücklich festlegen, welche Parameter ein Model akzeptieren darf. Rails löst einen Fehler aus, wenn Sie versuchen, nicht freigegebene Parameter per Massenzuweisung zu übergeben.
So wird aus einer stillen Sicherheitslücke eine ausdrücklich aktivierte und geprüfte Liste von Feldern.
require und permit
Das Muster verwendet zwei Methoden:
require(:model)stellt sicher, dass der Schlüssel der obersten Ebene vorhanden ist.permit(:field, ...)setzt die inneren Felder auf eine Whitelist.
def article_params
params.require(:article).permit(:title, :body)
endDen Helfer verwenden
Definieren Sie eine private Methode model_params und rufen Sie sie dort auf, wo Sie Datensätze erstellen oder aktualisieren. Übergeben Sie niemals rohe params an ein Model.
def create
@article = Article.new(article_params)
@article.save
redirect_to @article
end
private
def article_params
params.require(:article).permit(:title, :body)
endWarum eine private Methode?
Wenn Sie die Whitelist in einer einzigen privaten Methode verwalten, bedeutet das:
createundupdateverwenden dieselben Regeln.- Die zulässigen Felder sind leicht zu finden und zu prüfen.
- Die Methode wird nicht als Controller-Aktion offengelegt, da private Methoden nicht über Routen erreichbar sind.
Was herausgefiltert wird
Jeder übermittelte Schlüssel, der nicht in der permit-Liste enthalten ist, wird entfernt, bevor er das Model erreicht. Wenn ein Formular beispielsweise admin enthält, Sie aber nur title und body erlauben, wird der Wert von admin stillschweigend ignoriert, sodass der Datensatz sicher bleibt.
Arrays erlauben
Bei Checkbox-Listen oder Mehrfachauswahllisten, die Arrays senden, erlauben Sie diese, indem Sie als Wert ein leeres Array übergeben. Dadurch werden mehrere Werte für diesen Schlüssel zugelassen.
params.require(:article).permit(:title, tag_ids: [])Verschachtelte Hashes erlauben
Bei verschachtelten Attributen, also einem Formular, das ein übergeordnetes Objekt und seine untergeordneten Objekte gleichzeitig bearbeitet, erlauben Sie die verschachtelten Schlüssel mit einem Hash, der die inneren Felder beschreibt.
params.require(:order).permit(
:customer_name,
items_attributes: [:product_id, :quantity]
)Fehlende Parameter behandeln
Wenn der erforderliche Schlüssel fehlt, löst require ParameterMissing aus, was Rails als 400 Bad Request rendert. Dadurch werden Aktionen automatisch vor fehlerhaften Anfragen geschützt.
# Missing :article key raises:
# ActionController::ParameterMissingpermit! ist gefährlich
Sie können params.permit! aufrufen, um alles zu erlauben, doch dadurch öffnen Sie die Sicherheitslücke durch Massenzuweisung erneut. Vermeiden Sie dies außer in vertrauenswürdigen internen Kontexten. Bevorzugen Sie immer eine explizite Whitelist.
Bewährte Vorgehensweisen
Halten Sie params sicher:
- Erlauben Sie nur die minimal erforderliche Menge an Feldern.
- Erlauben Sie niemals sensible Flags wie
roleoderadminaus einem öffentlichen Formular. - Setzen Sie solche Felder im Controller anhand serverseitiger Logik explizit.
Schnelltest
Testen Sie Ihr Verständnis von Strong Parameters.
Zusammenfassung: Strong Parameters
Sie haben gelernt, Eingaben sicher zu filtern:
- Massenzuweisung ist ein echtes Sicherheitsrisiko.
requireverlangt den obersten Schlüssel;permiterstellt eine Whitelist für Felder.- Halten Sie die Whitelist in einer gemeinsam genutzten privaten Methode.
- Erlauben Sie bei Bedarf Arrays und verschachtelte Hashes.
- Vermeiden Sie
permit!und erlauben Sie niemals sensible Flags.
Als Nächstes geben wir Antworten mit Views und Rendering zurück.
Häufig gestellte Fragen
Ist die Lektion „Strong Parameters“ kostenlos?
Ja — der vollständige Text von „Strong Parameters“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Ruby Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Ruby Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Strong Parameters“?
Sichere Parameter Du übst Ruby Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Ruby Academy zu starten?
Keine Vorkenntnisse erforderlich. Ruby Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Strong Parameters“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Ruby Academy-Lektion Code schreiben und ausführen?
Ja. Jede Ruby Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Routen und Ressourcen
- Controller und Actions
- Strong Parameters
- Views und Rendering