¿Usar LINQ to SQL ayuda a prevenir la inyección SQL?

Estoy configurando un sitio público y lo primero que tengo en mente es la inyección SQL. Tengo algunos campos de texto que estoy guardando y estoy usando linq para actualizar / escribir en la base de datos. ¿Estoy seguro usando linq?

Este ejemplo es crear la cuenta de usuario.

Data.MemberRegistrationDataContext context = new MemberRegistrationDataContext(); Data.tbl_Member_UserProfile profile = new tbl_Member_UserProfile(); profile.SSN = Convert.ToDecimal(Session["tempMemberSSN_Registration"]); profile.UserName = userName; profile.Password = password; profile.EmailAddress = email; profile.QuestionID = qID; profile.QuestionResponse = securityAnswer; profile.LastModDt = DateTime.Now; profile.LastModBy = "web"; context.tbl_Member_UserProfiles.InsertOnSubmit(profile); context.SubmitChanges(); 

Este ejemplo está cambiando la contraseña

  MemberRegistrationDataContext dc = new MemberRegistrationDataContext(); var mProfileRecord = dc.tbl_Member_UserProfiles.Single(c => c.SSN == sSSN); mProfileRecord.Password = sNewPassword; dc.SubmitChanges(); 

¿Están seguros? ¿LINQ parametriza el SQL que genera automáticamente?

Sí, LINQ ayudará a detener la inyección de SQL.

LINQ to SQL pasa todos los datos a la base de datos a través de parámetros de SQL. Por lo tanto, aunque la consulta SQL se compone dinámicamente, los valores se sustituyen por parámetros del lado del servidor que protegen contra la causa más común de ataques de inyección SQL.

Además, vea Eliminar ataques de inyección SQL sin problemas con LINQ para obtener información.

Eres bueno para ir. Linq parametriza los datos que envía a la base de datos.

Use la propiedad Log para verificar lo que está sucediendo: dc.Log = Console.Out;

Debería hacerlo porque el SQL emitido usa parámetros con nombre que no pueden ser explotados para ejecutar SQL arbitrario.