L’utilizzo di LINQ to SQL aiuterà a prevenire l’SQL injection

Sto creando un sito pubblico e la prima cosa che penso è l’iniezione SQL. Ho alcuni campi di testo che sto salvando e sto usando linq per aggiornare / scrivere nel database. Sono sicuro usando linq?

Questo esempio sta creando l’account utente.

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(); 

Questo esempio sta cambiando la password

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

Sono sicuri? LINQ parametrizza l’SQL che genera automaticamente?

Sì, LINQ aiuterà a interrompere l’iniezione SQL.

LINQ to SQL passa tutti i dati al database tramite parametri SQL. Pertanto, sebbene la query SQL sia composta in modo dinamico, i valori vengono sostituiti dal lato server tramite parametri che proteggono dalla causa più comune degli attacchi di SQL injection.

Inoltre, vedere Eliminare gli attacchi SQL Injection in modo indolore con LINQ per alcune informazioni.

Sei a posto. Linq parametrizza i dati che invia al database.

Utilizzare la proprietà Log per verificare cosa sta succedendo: dc.Log = Console.Out;

Dovrebbe perché l’SQL emesso utilizza parametri denominati che non possono essere sfruttati per eseguire SQL arbitrario.