gpt4 book ai didi

entity-framework - 使用 Entity Framework 的数据安全

转载 作者:行者123 更新时间:2023-12-02 22:25:01 25 4
gpt4 key购买 nike

使用 Entity Framework 保护数据有哪些选项/解决方案?

这里我不谈表单登录之类的,只是假设用户是否通过了身份验证。

为了说明,我附上了我的一个 Web API Controller ,我想知道这是否是实现它的方法。我问的原因是我想知道是否有比将所有这些逻辑写入要在我的所有 Controller 中公开的数据更简单的方法。

此外,在查看像 breezejs 和 odata 这样的系统时,我可以在其中将 $expand=TrafficImages 添加到我的查询中,我不希望用户能够获取我的漏洞数据库。

总而言之,有哪些方法可以保护暴露的数据,使用户无法下载敏感数据。

[AllowAnonymous]
public object GetTheoryTests()
{
var identity = ((ClaimsIdentity)((ClaimsPrincipal)HttpContext.Current.User).Identity);
//if (HttpContext.Current.User.Identity.IsAuthenticated)


if (!identity.IsAuthenticated)
return db.TheoryTests.Include(t=>t.TrafficImages).Where(t=>t.PublicAvalible)
.Select(t => new { Id = t.Id, Title = t.Title, Images = t.TrafficImages }).AsEnumerable();

if (User.IsInRole("WebAdmins"))
return db.TheoryTests.AsEnumerable();

var key = identity.GetProvider();

var member = db.Members.Include(m=>m.PayedTheoryTests).SingleOrDefault(m=>m.Identities.Any(
i=>i.identityprovider == key.provider &&
i.nameidentifier == key.id));
if(member!=null)
return db.TheoryTests.Include(t => t.TrafficImages).Where(t => t.PublicAvalible).Select(t => new { Id = t.Id, Title = t.Title, Images = t.TrafficImages }).AsEnumerable();
else
return db.TheoryTests.Include(t => t.TrafficImages).Where(t => t.PublicAvalible)
.Union(member.PayedTheoryTests).Select(t => new { Id = t.Id, Title = t.Title, Images = t.TrafficImages }).AsEnumerable();



}

在考虑它时,我想念的是像我的数据库顶部的 View 模型,它取决于用户的状态。在同一个数据库上创建两个 Entity Framework ,一个用于有限的数据显示,一个用于更高级的操作,是否是一种解决方案?

最佳答案

同时,在 QueryInterceptors 到达之前,您应该采取其他步骤。首先,您应该研究保护 Web API Controller 或方法的技术,这超出了本答案的范围。

其次,w/r/t $expand,您对该功能保持警惕是完全正确的。您可能想要检查某些 Controller 方法需要哪些扩展和/或完全禁止其他方法进行扩展。

幸运的是,这相对容易做到。您有权访问请求查询字符串。您可以检测该字符串中是否存在“$expand”并分析它是否允许某些扩展并禁止其他扩展。

Breeze 将来会为此添加帮助程序。在此之前,您必须处理该字符串。

如果您愿意,您可能希望为此目的创建自己的操作过滤器。

关于entity-framework - 使用 Entity Framework 的数据安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13091760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com