L’utilisation de LINQ to SQL pour empêcher l’injection SQL

Je mets en place un site public et la première chose que je pense est l’injection SQL. J’ai des champs de texte que je sauvegarde et j’utilise linq pour mettre à jour / écrire dans la firebase database. Suis-je en sécurité avec linq?

Cet exemple crée le compte d’utilisateur.

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

Cet exemple change le mot de passe

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

Sont-ils en sécurité? LINQ paramètre-t-il le SQL qu’il génère automatiquement?

Oui, LINQ aidera à arrêter l’injection SQL.

LINQ to SQL transmet toutes les données à la firebase database via les parameters SQL. Ainsi, bien que la requête SQL soit composée dynamicment, les valeurs sont substituées côté serveur via des parameters qui protègent contre la cause la plus fréquente des attaques par injection SQL.

Pour plus d’informations, reportez-vous également à la section Élimination des attaques par injection SQL sans douleur avec LINQ .

Tu es bon pour aller. Linq configure les données envoyées à la firebase database.

Utilisez la propriété Log pour vérifier ce qui se passe: dc.Log = Console.Out;

Cela devrait être dû au fait que le code SQL émis utilise des parameters nommés qui ne peuvent pas être exploités pour exécuter du code SQL arbitraire.