实体框架 - 将null值作为参数传递

时间:2017-10-31 13:29:52

标签: sql-server entity-framework security entity-framework-4 sql-injection

我正在使用对比度安全性(指示SQL注入,漏洞的第三方工具)和实体框架,我的代码是这样的:

public int Insert(UserAddress userAddress)
{
    _context.Entry(userAddress).State = EntityState.Added;
    _context.SaveChanges();
    return userAddress.Id;
}

执行SaveChanges()时,会生成一个插入查询,如下所示:

INSERT [dbo].[Address] ([UserId], [Name], [Address1], [Address2],
                        [City], [State], [PostalCode], 
                        [Location], [LocationTypeId],
                        [BusinessName], [DeliveryInstructions],
                        [IsDefault], [SortOrder])
VALUES ('111111a1-22z2-33x3-44y4-fbad42c09c3a', @2, 'address1', null,
        'Alpharetta', 'GA', 30005,
        'POINT (-80.2427068 30.0925161)', 0,
        '', '',
        1, 0)

现在,根据对比安全性,在查询中传递“null”不符合道德规范,这是不好的做法 - 但我想允许空值!

我可以使用SQL参数将空值传递给SaveChanges()方法吗?

有没有办法解决这个问题?有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

我是Contrast Security .NET代理的开发人员之一。对我们的产品来说,这听起来像是误报。在insert语句中使用null应该没有任何问题。

您能否提交支持请求并包含您的查找跟踪xml?我们很乐意看看并解决这个问题。