1

可能重复:
使用 LINQ to SQL 是否有助于防止 SQL 注入

我正在使用 LINQ 访问 sql 数据库。下面的代码安全吗?

 var addRec = (from p in db.5544
                          where p.ID == newAddID
                          select p).Single();

            addRec.Address1 = comAddTxt1.Text;                                                                             //create address record
            addRec.Address2 = comAddTxt2.Text;
            addRec.Address3 = comAddTxt3.Text;
            addRec.Address4 = comAddTxt4.Text;
            addRec.PostCode = pstCdeTxt.Text;
            addRec.Town = twnTxt.Text;
            addRec.County = cntyTxt.Text;
            addRec.Country = cntComBox.SelectedItem.Text;

            db.SubmitChanges();

谢谢,

4

3 回答 3

10

是的,它不会受到 SQL 注入攻击。

不,它可能对其他形式的攻击不安全,即:跨站点脚本等,如果相关的话。

于 2012-07-17T08:02:24.640 回答
1

为了降低 XSS 攻击的风险,您应该在从 Web 应用程序的数据库中检索数据时对数据进行 HTMLEncode。

于 2012-07-17T07:58:16.920 回答
1

我建议尝试调用存储过程并将值作为参数发送,以便它可以为您提供参数检查。例如,如果您将“@Address1”声明为 varchar(200),则如果参数包含 sql 语句,则存储过程将不会执行。

您还可以通过将其与正则表达式进行比较来在时间之前检查字段,但这可能需要更多的努力,并且仍然不如使用存储过程那样安全。

于 2012-07-17T08:00:05.653 回答