2010-05-25 21 views
6

estoy trabajando a través NerdDinner y estoy un poco confundido acerca de la siguiente sección ...HTML codificación en la entrada MVC

Primero le han agregado una forma de crear una nueva cena, con un montón de cuadros de texto delcared como:

<%= Html.TextArea("Description") %>

entonces Ellos muestran dos formas de entrada de un formulario de unión al modelo:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Create() { 
    Dinner dinner = new Dinner(); 
    UpdateModel(dinner); 
    ... 
} 

o:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Create(Dinner dinner) { ... } 

Ok, genial, todo parece muy fácil hasta ahora.

A continuación, un poco más tarde que dicen:

Es importante estar siempre paranoico por la seguridad cuando se acepta cualquier usuario de entrada, y esto también es cierto cuando objetos vinculantes para formar entrada. Usted debe tener cuidado de siempre HTML codificar cualquier entrada de datos manual a HTML evitar e inyección JavaScript ataques

Huh? MVC está gestionando el enlace de datos para nosotros. ¿Dónde/cómo se supone que debes hacer la codificación HTML?

Respuesta

2

En general (pero no siempre) quiere codificar HTML los valores antes de escribirlos, normalmente en sus vistas, pero posiblemente también desde el controlador.

alguna información aquí: http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and-asp-net-mvc-2.aspx

+0

por lo que no importa lo que le permiten al usuario entrar en la forma, siempre y cuando no lo hago de salida de nuevo sin codificar? Realmente no sé cómo funciona la inyección de HTML. – fearofawhackplanet

+1

Sí. Hay muchos tipos de ataques de scripts entre sitios, pero una simple comprobación en su propio sitio es intentar ingresar '' en cualquier lugar donde el usuario pueda ingresar datos (incluso al crear su nombre de usuario). Si ve la ventana emergente de alerta (suponiendo que tenga activado javascript), habrá encontrado un lugar que necesite codificación HTML. Lo mejor es codificar HTML ** todo ** salida, y solo eliminar esa codificación cuando sea necesario. – RedFilter

+0

ok gracias orbman – fearofawhackplanet

Cuestiones relacionadas