gpt4 book ai didi

asp.net - 确保登录用户只能看到他们的数据的最佳方法

转载 作者:行者123 更新时间:2023-12-04 19:09:56 25 4
gpt4 key购买 nike

这听起来像是一个愚蠢的问题,但我只是想知道我是否在任何地方遗漏了一个技巧。

场景是,我有一个使用 Simple Memebership 的 Web 应用程序,用户可以在其中注册使用它(例如发票程序)。

但是,他们应该只能查看/更新/删除他们自己添加到数据库/网络应用程序的信息。

确保用户只能访问其信息的最佳方法是什么?

是否要向每个表添加一个用户名字段,例如:

public class Invoice
{
public int InvoiceId { get; set; }
public int CustId { get; set; }
public string UserName { get; set; }
}

public class Item
{
public int ItemId { get; set; }
public int InvoiceId { get; set; }
public string UserName { get; set; }
}

...然后在访问数据的任何 Controller 中,只需在每个查询中添加对用户名的检查,例如:
var Inv = db.Invoices.Where(x => x.UserName = User.Identity.Name);
var Itm = db.Items.Where(y => y.UserName = User.Identity.Name);

这就是我目前使用的,但想知道这是否是 最佳实践 ?或者如果现在我们使用 MVC4 有更简单的方法吗?

最好用 用户名 用户 ID 来自 用户资料 表,还是有关系?

更新以增加以下评论的清晰度

所以 10 个用户已经注册 - 并且都创建了自己的发票。我不希望任何用户看到任何其他用户的发票。

感谢您的任何建议。

标记

最佳答案

我会做的事情是:

  • 避免在帖子/查询字符串中传递任何形式的用户 ID/凭据,将其保存在安全的地方,例如在 cookie 中加密,并在构建查询时始终使用它
  • 如果您将 ID 作为编辑的一部分传递回您的程序,请确保这些值没有被篡改,如果您在隐藏字段中输出 ID,请确保它在返回时与出去时相同(这称为直接引用攻击)
  • 如果您的应用程序请求编辑,例如 client/edit/4,请在显示之前始终确保 id 4 属于该用户。

  • 关于前 10 个漏洞的一些很好的阅读: https://www.owasp.org/index.php/Top_10_2010-Main

    关于asp.net - 确保登录用户只能看到他们的数据的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16103780/

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