El update model es igualmente vulnerable a la inyeccion de propiedades.
Tenes que utilizar IncludedProperties y ExcludedProperties.

Otra opcion es utilizar ViewModels que solo incluyan los campos capturados
en esa pantalla.

----------------------------------
Carlos Peix

2011/3/9 Andres Guzman <andres.guzman...@gmail.com>

> Tal como dices, encontre información al respecto en la cual dicen que una
> forma fácil es recibir el objeto completo pero existe el riesgo de la
> inyeccion de propiedades y la otra es utilizar el formcollection o el método
> UpdateModel que tendre que averiguar en que consiste este UpdateModel o cual
> es su funcion.
>
> Pero creo que por lo poco que eh estudiado el tema me parece que lo mejor
> aunque menos eficiente es utilizar algo como esto tanto para cuando quiera
> modificar o crear algun registro
>
>
> public ActionResult Crear(FormCollection formColl)
> {
>         string a = formColl["a"].ToString();
>         string b = formColl["b"].ToString();
>         string c = formColl["c"].ToString();
>
>     MICAPADENEGOCIO.Crear(a, b, c);
>
> return View()
> }
>
> O el updatemodel, con esto me evito el riesgo de "injeccion de propiedades"
>
> Estare en lo correcto.
>
> Grx
>
> El 9 de marzo de 2011 10:31, Carlos Peix <peix-lis...@praxia.com.ar>escribió:
>
>> Lo que dice Leandro es correcto, pero, tal como sospechas, hay variantes y
>> motivos.
>>
>> En primer lugar, cuando recibis el objeto completo, hay que tener cuidado
>> con la "injeccion de propiedades". Esto es, que un chico malo te agregue en
>> el post datos para propiedades qeu vos no queres modificar. Busca
>> informacion sobre los "IncludedProperties" y "ExcludedProperties". Si
>> necesitas mas informacion sobre esto avisanos.
>>
>> Segundo, el binder que completa el objeto crea una nueva instancia, esto
>> puede no ser lo adecuado en una modificacion. Yo utilizo un repositorio para
>> recuperar el objeto y luego la FormCollection o el metodo UpdateModel del
>> Controller.
>>
>> Abrazo
>>
>> ----------------------------------
>> Carlos Peix
>>
>> 2011/3/9 Andres Guzman <andres.guzman...@gmail.com>
>>
>>> Pero no existe alguna buena practica que te indique cual utilizar, o
>>> simplemente no hay diferencia en cada una de ellas y la decisión de cual
>>> utilizar queda a cargo del programador.
>>>
>>>
>>>
>>> El 9 de marzo de 2011 09:08, Leandro Halfon 
>>> <leandrohal...@gmail.com>escribió:
>>>
>>>  Andres,
>>>> A mi personalmente me gusta pasar el objeto.
>>>> Obviamente no siempre hace falta, pero en el caso de un ABM, es mas
>>>> facil y rapido para trabajar.
>>>>
>>>> Saludos.
>>>>
>>>> 2011/3/9 Andres Guzman <andres.guzman...@gmail.com>
>>>>
>>>>> Estimados:
>>>>>
>>>>> Buenas tardes, acudo a Uds. por mi inexperiencia en MVC 2, y necesito
>>>>> saber si alguien me la puede aclarar. Lo que sucede es que no se cual sera
>>>>> la mejor forma de pasar los datos desde la vista al controlador cuando se
>>>>> realize un submit.
>>>>>
>>>>>
>>>>>    - si pasar el modelo (public ActionResult Crear(Usuario
>>>>>    objUsuario))
>>>>>    - si pasar cada dato por separado (public ActionResult Crear(string
>>>>>    nombre, string aPatero, string mail)) y yo despues en mi capa negocio 
>>>>> crear
>>>>>    el objeto con los diferentes datos
>>>>>    - o pasar una Colleccion con los datos del formulario (public
>>>>>    ActionResult Crear(FormCollection formColl)) y yo despues en mi capa 
>>>>> negocio
>>>>>    crear el objeto con los diferentes datos
>>>>>
>>>>>  Desde ya cualquier ayuda se agradece.
>>>>>
>>>>> --
>>>>> Andrés Guzmán
>>>>> 099319111
>>>>> andres.guzman...@gmail.com
>>>>>
>>>>>
>>>>
>>>
>>>
>>> --
>>> Andrés Guzmán
>>> 099319111
>>> andres.guzman...@gmail.com
>>>
>>>
>>
>
>
> --
> Andrés Guzmán
> 099319111
> andres.guzman...@gmail.com
>
>

Responder a