我正在建立一个公共站点,我首先想到的是SQL注入.我有一些文本字段我正在保存并使用linq更新/写入数据库.我使用linq安全吗?
此示例是创建用户帐户.
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查询是动态组合的,但是这些值通过参数来替代服务器端,以防止SQL注入攻击的最常见原因.
另外, 有关一些信息,请参阅使用LINQ无痛地消除SQL注入攻击.
你很高兴.Linq确实将它发送到数据库的数据参数化.
使用Log属性检查发生了什么: dc.Log = Console.Out;