【问题标题】:Using GUID in Querystring for security在查询字符串中使用 GUID 以确保安全
【发布时间】:2016-05-26 10:27:41
【问题描述】:

在我的 ASP.Net MVC 应用程序中,我想允许特定用户组访问他们可以下载文件的页面。通常我会要求这个用户组通过登录名(用户名和密码)访问下载页面并验证他们的登录凭据。但是,该用户组抱怨他们拥有其他几个 Web 系统的登录详细信息的数量,并且真的不想记住另一组登录详细信息。因此,我正在考虑向用户传递一个包含 GUID 的 URL,希望这意味着任何人都不太可能猜到。例如:

http://www.example.com/admin/93017B0C-D548-40CA-A7B0-D4DA707ABE4C

我真的很感激人们对这种方法的看法?它仍然被认为是安全的吗?或者我应该使用我的常规方法来验证用户登录详细信息,然后通过下载将它们重定向到安全页面。

提前致谢。

【问题讨论】:

    标签: asp.net-mvc security query-string guid


    【解决方案1】:

    有关 GUID 本身安全性的信息,请参阅 this answerGUID RFC

    不要假设 UUID 很难猜;不应该使用它们
    作为安全能力(仅仅拥有授权的标识符
    访问),例如。一个可预测的随机数源将
    加剧局势。

    也就是说,GUID 是唯一的,但它们不是不可预测的,因此不适合这种用途。改用 CSPRNG 生成 128 位随机令牌。

    关于 URL 的安全性,URL 不被认为是安全的。原因是它们默认由代理和服务器记录,保存在浏览器历史日志中,并且可以被引用的 HTTP 标头泄露。

    另外建议使用https,保证路径在传输过程中不会被截取。

    假设某个用户已从组中删除,但您使用的是此方案而不是正确的身份验证。他们的浏览器自动完成功能会记住 URL 中的 GUID,这意味着他们将来可以随时访问该页面(或者他们甚至可以将其加入书签以确保这一点)。

    我的建议是使用真实身份验证,并鼓励您的用户使用密码管理器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-07
      • 2019-07-22
      • 2010-09-24
      • 2018-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多