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)
endUsar 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:
createyupdatecomparten 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::ParameterMissingpermit! 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
roleoadmindesde 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.
requireexige la clave principal;permitincluye 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
- Rutas y recursos
- Controladores y acciones
- Parámetros seguros
- Vistas y renderizado