代码之家  ›  专栏  ›  技术社区  ›  keyboardP

可见的guid是否存在安全风险?

  •  3
  • keyboardP  · 技术社区  · 15 年前

    我正在为我的网站使用ASP.NET和成员资格提供程序。如果用户能够很容易地看到他们的guid,这会被视为安全风险吗?我应该采取额外的措施来防止用户很容易找到他们的guid,比如当他们确认他们的验证过程时。尽管有一些方法可以解决这一问题,例如为“前端”活动使用单独的guid,但这是否是不必要的增加日常开支和开发时间?

    可能的欺骗的一个例子是,当我验证用户访问资源的权限时。

    Guid cUser = (Guid)Membership.GetUser().ProviderUserKey; //if this is publicly viewed, then  there's no reason to call the DB or store in a session as it can be placed in the QueryString
    bool grantAccess = CheckGroupPermission(cUser, groupID);
    

    谢谢

    2 回复  |  直到 15 年前
        1
  •  4
  •   Wayne Hartman    15 年前

    一般来说,向外部世界公开数据库的键不是一个好主意,但是如果必须选择要公开的字段类型,那么guid的选择就没有那么糟糕了。它比公开一个序列号要好得多,在这个序列号中可以(相当容易地)猜出组成数据库中未知有效标识符的是什么。

    您可以提供用户名,而不是向外部世界提供guid。它应该是独一无二的。

        2
  •  5
  •   Guffa    15 年前

    不,显示用户记录的ID本身并不存在安全风险。无论如何,你不应该相信它是秘密的,因为你很难完全独立于它们。

    但是,如果您仅使用ID作为验证来授予对资源的访问权限,则存在安全风险。您永远不能完全依赖从客户机发送的任何信息,您应该始终使用一些不易被篡改的信息,例如会话变量中的值,该值只在经过适当的用户验证后才放在那里。