Parâmetros fortes
Parâmetros seguros.
Parâmetros fortes é uma aula grátis de Ruby Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Ruby Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ruby Academy inclui 4 aulas no total.
O problema da atribuição em massa
Os formulários enviam muitos campos de uma só vez. Se você passar todos eles diretamente a um modelo, um invasor poderá adicionar campos que você nunca pretendeu permitir, como definir admin: true. Essa é a vulnerabilidade de atribuição em massa.
- A entrada do usuário nunca é confiável.
- Você deve criar uma lista de permissões com os campos permitidos.
- O Rails aplica essa regra por meio de parâmetros fortes.
O que são parâmetros fortes?
Os parâmetros fortes exigem que você declare explicitamente quais parâmetros um modelo pode aceitar. O Rails gera um erro se você tentar fazer uma atribuição em massa com parâmetros que não foram permitidos.
Isso transforma uma falha de segurança silenciosa em uma lista de campos definida explicitamente e revisada.
require e permit
O padrão usa dois métodos:
require(:model)garante que a chave de nível superior exista.permit(:field, ...)cria uma lista de permissões para os campos internos.
def article_params
params.require(:article).permit(:title, :body)
endUsando o auxiliar
Defina um método privado model_params e chame-o onde você cria ou atualiza um registro. Nunca passe params diretamente a um modelo.
def create
@article = Article.new(article_params)
@article.save
redirect_to @article
end
private
def article_params
params.require(:article).permit(:title, :body)
endPor que um método privado?
Manter a lista de permissões em um único método privado significa que:
createeupdatecompartilham as mesmas regras.- É fácil encontrar e revisar os campos permitidos.
- O método não é exposto como uma ação de controlador (métodos privados não podem ser roteados).
O que é filtrado
Qualquer chave enviada que não esteja na lista de permit é descartada antes de chegar ao modelo. Se um formulário incluir admin de alguma forma, mas você permitir apenas title e body, o valor de admin será ignorado silenciosamente, mantendo o registro seguro.
Permitindo listas
Para listas de caixas de seleção ou seleções múltiplas que enviam listas, permita-as passando uma lista vazia como valor. Isso permite vários valores para essa chave.
params.require(:article).permit(:title, tag_ids: [])Permitindo mapas aninhados
Para atributos aninhados (um formulário que edita um registro pai e seus registros filhos de uma só vez), permita as chaves aninhadas com um mapa que descreva os campos internos.
params.require(:order).permit(
:customer_name,
items_attributes: [:product_id, :quantity]
)Lidando com parâmetros ausentes
Se a chave obrigatória estiver ausente, require gera ParameterMissing, que o Rails renderiza como uma resposta 400 de solicitação inválida. Isso protege automaticamente as ações contra solicitações malformadas.
# Missing :article key raises:
# ActionController::ParameterMissingpermit! é perigoso
Você pode chamar params.permit! para permitir tudo, mas isso reabre a brecha de atribuição em massa. Evite isso, exceto em contextos internos confiáveis. Prefira sempre uma lista de permissões explícita.
Boas práticas
Mantenha os parâmetros seguros:
- Inclua na lista de permissões o conjunto mínimo de campos.
- Nunca permita indicadores sensíveis, como
roleouadmin, em um formulário público. - Defina esses campos explicitamente no controlador com base na lógica do lado do servidor.
Verificação rápida
Teste sua compreensão sobre parâmetros fortes.
Recapitulação: Parâmetros fortes
Você aprendeu a filtrar dados de entrada com segurança:
- A atribuição em massa é um risco de segurança real.
requireexige a chave principal;permitcria uma lista de permissões para os campos.- Mantenha a lista de permissões em um método privado compartilhado.
- Permita vetores e mapas aninhados quando necessário.
- Evite
permit!e nunca permita indicadores sensíveis.
Agora, retornaremos respostas com visualizações e renderização.
Perguntas Frequentes
A aula “Parâmetros fortes” é grátis?
Sim — o texto completo de “Parâmetros fortes” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Ruby Academy, atualize para CoddyKit PRO. O curso de Ruby Academy inclui 4 aulas no total.
O que vou aprender em “Parâmetros fortes”?
Parâmetros seguros. Você pratica Ruby Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Ruby Academy?
Nenhuma experiência prévia é necessária. Ruby Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Parâmetros fortes”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Ruby Academy?
Sim. Cada aula de Ruby Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Rotas e recursos
- Controladores e ações
- Parâmetros fortes
- Visões e renderização