Después de recibir más información de DCoder, la frase que estaba buscando aquí es una "vulnerabilidad de asignación de masas". Es decir, aprovechar la conveniencia de los métodos que guardarían todos los campos válidos en la base de datos, independientemente de su presencia en el formulario inicial (haciéndolos vulnerables a los datos POST manipulados que contienen más campos [posiblemente más críticos] que los previstos))
Las dos respuestas comunes se denominan apropiadamente listas blancas y listas negras; incluir en la lista blanca campos destinados a la modificación o incluir en la lista negra campos que no deberían modificarse.
Mi pregunta sigue: ¿CakePHP automáticamente lista blanca solo aquellos campos en el formulario de envío, o es necesario para mí (y otros aficionados a la torta) tener cuidado de que somos whitelisting o blacklisting apropiadamente?
pregunta original:
la torta ofrece un montón de grandes maneras de generar formas y manejarlos casi automáticamente. Mientras pensaba en la seguridad, me pregunté si Cake sabía qué campos existían en un formulario enviado, o simplemente aceptará un campo válido. Tome el siguiente mensaje si no tengo sentido (y alguien puede editar mi pregunta para que esté mejor redactada si se le ocurre una forma mejor de expresarla):
Digamos que permito a mis usuarios editar su perfil. Creo un formulario que tiene campos para nombre de usuario, correo electrónico y contraseña, en la acción edit
.
Un usuario inteligente quiere entrar y cambiar su campo de is_admin
false
a true
, por lo que utilizar una aplicación como Firebug para enviar datos de envío personalizado a la acción edit
, que incluye el campo is_admin
conjunto de true
.
La pregunta es, ¿se daría cuenta Cake por sí solo que is_admin
no estaba en su forma original, o debo tener cuidado de especificar explícitamente los únicos campos que campos puede modificar una acción determinada? hay una manera mas facil?
¡Gracias!
James
Esto se conoce como la "asignación de masas" y recientemente fue noticia cuando estaba [ usado para "hackear" GitHub] (http://arstechnica.com/business/news/2012/03/hacker-commandeers-github-to-prove-vuln-in-ruby.ars). Normalmente, la solución a esto es *** whitelisting ** los campos que se pueden asignar en masa *. – DCoder
@DCoder, gracias, tener el nombre real ayuda mucho. Voy a modificar la pregunta para reflejar esa información. – xtraorange