0Pricing
Ruby Academy · Lección

Parámetros seguros

Parámetros seguros

Parámetros seguros es una lección gratuita de Ruby Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Ruby Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Ruby Academy incluye 4 lecciones en total.

El problema de la asignación masiva

Los formularios envían muchos campos a la vez. Si los pasa todos directamente a un modelo, un atacante podría añadir campos que nunca pretendió permitir, como establecer admin: true. Esta es la vulnerabilidad de asignación masiva.

  • La entrada del usuario nunca es de confianza.
  • Debe incluir en una lista blanca los campos permitidos.
  • Rails aplica esta protección mediante strong parameters.

¿Qué son los strong parameters?

Los strong parameters requieren que declare explícitamente qué parámetros puede aceptar un modelo. Rails genera un error si intenta asignar masivamente parámetros que no se han permitido.

Así, un agujero de seguridad silencioso se convierte en una lista de campos explícita y revisada.

require y permit

El patrón utiliza dos métodos:

  • require(:model) garantiza que exista la clave de nivel superior.
  • permit(:field, ...) incluye en la lista blanca los campos internos.
def article_params
  params.require(:article).permit(:title, :body)
end

Usar el helper

Defina un método privado model_params y llámelo donde cree o actualice registros. Nunca pase params sin filtrar a un modelo.

def create
  @article = Article.new(article_params)
  @article.save
  redirect_to @article
end

private

def article_params
  params.require(:article).permit(:title, :body)
end

¿Por qué un método privado?

Mantener la lista blanca en un único método privado implica lo siguiente:

  • create y update comparten las mismas reglas.
  • Los campos permitidos son fáciles de encontrar y revisar.
  • No queda expuesto como una acción del controlador (los métodos privados no pueden asignarse a rutas).

Qué se filtra

Cualquier clave enviada que no esté en la lista de permit se descarta antes de llegar al modelo. Si un formulario incluye de algún modo admin, pero solo permite title y body, el valor de admin se ignora silenciosamente y el registro se mantiene seguro.

Permitir arrays

Para listas de casillas de verificación o selectores múltiples que envían arrays, permítalos pasando un array vacío como valor. Esto permite varios valores para esa clave.

params.require(:article).permit(:title, tag_ids: [])

Permitir hashes anidados

Para atributos anidados (un formulario que edita un elemento principal y sus elementos secundarios a la vez), permita las claves anidadas mediante un hash que describa los campos internos.

params.require(:order).permit(
  :customer_name,
  items_attributes: [:product_id, :quantity]
)

Gestionar parámetros ausentes

Si falta la clave obligatoria, require genera ParameterMissing, que Rails muestra como un error 400 Bad Request. Esto protege automáticamente las acciones frente a solicitudes con formato incorrecto.

# Missing :article key raises:
# ActionController::ParameterMissing

permit! es peligroso

Puede llamar a params.permit! para permitirlo todo, pero esto vuelve a abrir la vulnerabilidad de asignación masiva. Evítelo salvo en contextos internos de confianza. Prefiera siempre una lista blanca explícita.

Buenas prácticas

Mantenga seguros los parámetros:

  • Incluya en la lista blanca el conjunto mínimo de campos.
  • No permita nunca indicadores sensibles como role o admin desde un formulario público.
  • Establezca esos campos explícitamente en el controlador según la lógica del servidor.

Comprobación rápida

Compruebe su comprensión de los parámetros seguros.

Resumen: parámetros seguros

Aprendió a filtrar la entrada de forma segura:

  • La asignación masiva es un riesgo de seguridad real.
  • require exige la clave principal; permit incluye campos en la lista blanca.
  • Mantenga la lista blanca en un método privado compartido.
  • Permita matrices y hashes anidados cuando sea necesario.
  • Evite permit! y no permita nunca indicadores sensibles.

A continuación, devolveremos respuestas con vistas y renderizado.

Preguntas frecuentes

¿La lección «Parámetros seguros» es gratis?

Sí — el texto completo de «Parámetros seguros» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Ruby Academy, actualiza a CoddyKit PRO. El curso de Ruby Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Parámetros seguros»?

Parámetros seguros Practicas Ruby Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Ruby Academy?

No se requiere experiencia previa. Ruby Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Parámetros seguros»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Ruby Academy?

Sí. Cada lección de Ruby Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Rutas y recursos
  2. Controladores y acciones
  3. Parámetros seguros
  4. Vistas y renderizado
← Volver a Ruby Academy