可见GUID是否存在安全风险?

key*_*rdP 3 membership asp.net security guid query-string

我正在使用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);
Run Code Online (Sandbox Code Playgroud)

谢谢

Way*_*man 5

将数据库的键暴露给外界通常不是一个好主意,但是如果您必须选择要公开的字段类型,GUID 并不是一个糟糕的选择。这比暴露一个序列号要好得多,因为它可以被猜测(很容易)什么构成了数据库中的未知有效标识符。

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


Guf*_*ffa 5

不,显示用户记录的id本身并不存在安全风险.不管怎样,你不应该依赖它是秘密的,因为很难让自己完全独立于它们.

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