Strong Parameters
Parametri sicuri
Strong Parameters è una lezione Ruby Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Ruby Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ruby Academy include 4 lezioni in totale.
Il problema del mass assignment
I moduli inviano molti campi contemporaneamente. Se li passa tutti a un modello senza controllarli, un attaccante potrebbe aggiungere campi che non aveva previsto, ad esempio impostando admin: true. Questa è la vulnerabilità del mass assignment.
- L'input dell'utente non è mai considerato attendibile.
- Deve inserire in una lista consentita i campi autorizzati.
- Rails applica questa protezione tramite gli strong parameters.
Che cosa sono gli strong parameters?
Gli strong parameters richiedono di dichiarare esplicitamente quali parametri un modello può accettare. Rails solleva un errore se prova ad assegnare in massa parametri che non sono stati autorizzati.
In questo modo una falla di sicurezza silenziosa diventa un elenco di campi esplicito, verificato e approvato.
require e permit
Lo schema usa due metodi:
require(:model)assicura che la chiave di livello superiore esista.permit(:field, ...)inserisce in una lista consentita i campi interni.
def article_params
params.require(:article).permit(:title, :body)
endUsare l'helper
Definisca un metodo privato model_params e lo chiami nel punto in cui crea o aggiorna. Non passi mai params grezzi a un modello.
def create
@article = Article.new(article_params)
@article.save
redirect_to @article
end
private
def article_params
params.require(:article).permit(:title, :body)
endPerché un metodo privato?
Mantenere l'elenco dei campi consentiti in un unico metodo privato significa:
createeupdatecondividono le stesse regole.- I campi consentiti sono facili da trovare e verificare.
- Il metodo non viene esposto come azione del controller (i metodi privati non possono essere raggiunti tramite una route).
Cosa viene filtrato
Qualsiasi chiave inviata che non compare nell'elenco di permit viene scartata prima di raggiungere il modello. Se un modulo include in qualche modo admin ma autorizza solo title e body, il valore di admin viene ignorato silenziosamente, mantenendo sicuro il record.
Consentire gli array
Per gli elenchi di caselle di controllo o i selettori multipli che inviano array, li autorizzi passando un array vuoto come valore. In questo modo sono consentiti più valori per quella chiave.
params.require(:article).permit(:title, tag_ids: [])Consentire hash annidati
Per gli attributi annidati (un modulo che modifica contemporaneamente un elemento padre e i relativi elementi figli), autorizzi le chiavi annidate con un hash che descrive i campi interni.
params.require(:order).permit(
:customer_name,
items_attributes: [:product_id, :quantity]
)Gestire i parametri mancanti
Se manca la chiave obbligatoria, require solleva ParameterMissing, che Rails restituisce come 400 Bad Request. In questo modo le azioni vengono automaticamente protette dalle richieste malformate.
# Missing :article key raises:
# ActionController::ParameterMissingpermit! è pericoloso
Può chiamare params.permit! per consentire tutto, ma in questo modo riapre la vulnerabilità dell'assegnazione di massa. Lo eviti, tranne che in contesti interni attendibili. Preferisca sempre una whitelist esplicita.
Buone pratiche
Mantenga params al sicuro:
- Inserisca nella whitelist il numero minimo di campi.
- Non autorizzi mai da un modulo pubblico flag sensibili come
roleoadmin. - Imposti esplicitamente questi campi nel controller in base alla logica lato server.
Verifica rapida
Verifichi la Sua comprensione degli strong parameters.
Riepilogo: Strong Parameters
Ha imparato a filtrare l'input in modo sicuro:
- L'assegnazione di massa è un rischio concreto per la sicurezza.
requirerichiede la chiave di livello superiore;permitinserisce i campi nella whitelist.- Mantenga la whitelist in un metodo privato condiviso.
- Autorizzi array e hash annidati quando necessario.
- Eviti
permit!e non autorizzi mai flag sensibili.
Successivamente, restituirà risposte con view e rendering.
Domande Frequenti
La lezione «Strong Parameters» è gratuita?
Sì — il testo completo di «Strong Parameters» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Ruby Academy, passa a CoddyKit PRO. Il corso Ruby Academy include 4 lezioni in totale.
Cosa imparerò in «Strong Parameters»?
Parametri sicuri Eserciti Ruby Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Ruby Academy?
Non è richiesta alcuna esperienza precedente. Ruby Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Strong Parameters»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Ruby Academy?
Sì. Ogni lezione Ruby Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Route e risorse
- Controller e action
- Strong Parameters
- Viste e rendering