将使用LINQ to SQL帮助防止SQL注入

我正在build立一个公共站点,我首先想到的是SQL注入。 我有一些我正在保存的文本字段,正在使用LINQ来更新/写入数据库。 我安全使用LINQ?

这个例子是创build用户帐户。

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

这个例子是改变密码

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

这些安全吗? LINQ是否将自动生成的SQL参数化?

是的,LINQ将帮助停止SQL注入。

LINQ to SQL通过SQL参数将所有数据传递给数据库。 所以,虽然SQL查询是dynamic组合的,但是这些值是通过参数来代替服务器端的,这些参数是防止SQL注入攻击的最常见原因。

此外,请参阅用LINQ无痛消除SQL注入攻击的一些信息。

你很好走。 Linq参数化了它发送给数据库的数据。

使用Log属性检查发生了什么事情: dc.Log = Console.Out;

这应该是因为SQL发出的命名参数不能被利用来执行任意的SQL。