2012-01-31 17 views
9

Es la primera vez que desarrollo usando MVC y quiero hacerlo seguro.Control de inyección SQL en MVC

Cuando uso HtmlEncode convierte la cadena a la cadena HTML equivalente.

El usuario puede ingresar en la búsqueda por ejemplo ali 'o ali-- y existen en mi base de datos. ¿Cómo puedo controlar mi búsqueda e iniciar sesión desde SQL injection?

¿También hay algún tutorial o práctica recomendada para evitar la inyección de scripts?

+0

¿cómo se accede a su base de datos? LINQ? ¿Marco de la entidad? –

+0

Utilizo el normal, que usted prefiere LINQ o Entity framework – AMH

+1

Consulte este [SO link] (http://stackoverflow.com/questions/8676/entity-framework-vs-linq-to-sql) ... . Ambos verificará si hay inyección de sql para usted ... –

Respuesta

15

LINQ y Entity Framework ya verifican la inyección SQL por usted.

embargo, usted debe leer la documentación de todos modos:

LINQ (Ataques sección de inyección SQL) MSDN Link

de Entity Framework (MSDN Link sección de seguridad para consultas)

espero que ayude!

+0

¿qué ocurre con la inyección de scripts? – AMH

+0

@AMH Creo que debería ser otra pregunta, pero este enlace podría ser útil: [asp tutorials] (http://www.asp.net/mvc/tutorials/versiones anteriores/security/prevention-javascript-injection-attacks-cs) –

+0

que prefiera LINQ o EF – AMH

4

Si usa LINQ para realizar sus consultas de base de datos, elimina ese tipo de riesgos de inyección de SQL para usted.

+0

gracias soporta las bases de datos ROM, ¿qué hay de la inyección de scripts? – AMH

7

Siempre que use consultas parametrizadas o un ORM como NHibernate o Entity Framework, no tiene que hacer nada para evitar la inyección SQL. Los parámetros se pasan al servidor fuera de la instrucción SQL real, como parte de la llamada RPC al servidor. La mayoría de los ORM usan consultas parametrizadas para reasentar el rendimiento, por lo que no son vulnerables a la inyección de SQL.

La inyección SQL solo es posible si crea una instrucción SQL concatenando valores de cadena.

Dicho esto, todavía debe tener cuidado con la entrada del usuario para evitar ataques de inyección de scripts. Afortunadamente, ASP.NET MVC ya proporciona un mecanismo de validación de solicitud (ver Understanding Request Validation).

+0

pero me cansé de eliminar la base de datos que conozco al pasar los valores por los parámetros – AMH

+0

No importa lo que pase al parámetro (y por el parámetro I me y un objeto derivado de DbParameter como SqlParameter (http://msdn.microsoft.com/en-us/library/system.data.common.dbparameter.aspx), se pasará al servidor como una cadena simple. Nunca se ejecutará. Todavía puede tener problemas si usa el valor almacenado para construir una instrucción SQL mediante la concatenación de cadenas en alguna otra parte de su aplicación. –