【问题标题】:Should the user id (Guid) in MVC 5 authorisation be hidden from the user?是否应该对用户隐藏 MVC 5 授权中的用户 ID(Guid)?
【发布时间】:2016-01-19 12:49:02
【问题描述】:

我需要知道标准 MVC 5 授权系统中的用户 ID(Guid)是否有任何原因对用户隐藏。我问的原因是我可以查看是否将该 ID 用于个人用户页面引用。

例如,我可以为用户创建个人资料页面或拥有该用户可以亲自编辑的帖子。据我了解,可以使用外键作为表中的主键。每个用户都可以有一个使用用户 ID 的个人资料页面。这意味着用户当然会看到用户 ID:

public ActionResult Profile(Guid? id)
{
    //check user etc
}

作为旁注。我宁愿做那种事情也不愿改变身份验证表。显然,无论如何,您都必须为帖子之类的内容使用单独的表格。我正在参考用户详细信息等内容。我真的不喜欢扩展用户表。

【问题讨论】:

    标签: security authentication asp.net-mvc-5


    【解决方案1】:

    您可以使用 Guid id 来识别和查找特定任务的用户,或者您可以使用每个用户唯一的任何其他内容。无论你喜欢哪个都行。就我个人而言,我会使用每个用户唯一的用户名,因为它使 URL 更漂亮。但是使用 Guid 并没有错,它解决了为您提供一些可识别信息以检索正确的用户/个人资料记录的目的。

    如果人们知道您在做什么,则可能存在一些安全问题,但只要您确保人们无法访问他们不应该访问的页面并始终在您的 sql 查询中使用参数,它就应该是很好。

    【讨论】:

    • 用户名的一个问题可能是如果它被改变了。这就是我认为使用用户 ID 会更好的原因。也许有些人不提供更改用户名的功能,但这是我为管理员添加的,只是为了以防万一以后有人迫切需要更改用户名。
    • 另外,我只是打算使用一个 id(如 ProfileID)。我只是想知道这是否过度。我知道如果您使用自动编号或 Guid,脚手架的效果会更好。
    • 您可以跟踪用户名并自动将旧用户页面转发到新用户页面。为简单起见,使用 ID 也无妨。
    • 好吧,我想我和你在一起。关于用户是否可以看到他们的用户 ID 的要点似乎已经得到解决。我在原始问题中没有提到的是,即使我确实使用 ProfileID 作为 PK,用户仍然会将用户 ID 视为任何形式的隐藏字段(除非我仅使用一个表来链接2个id,有点乱)。
    • 我以前在表单中使用过用户 ID 作为隐藏字段,它工作得很好。我还使用了用户 ID 作为 URL 的一部分,如果我需要用户 ID,我也会查看数据发布到的 URL。这些解决方案中的任何一个都能满足您的需求。
    猜你喜欢
    • 2020-06-30
    • 2021-04-29
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 2021-08-11
    • 2013-10-07
    • 2019-10-12
    • 2015-10-29
    相关资源
    最近更新 更多