【问题标题】:Is using an uniqueidentifier for the primary key more secure? [closed]对主键使用唯一标识符是否更安全? [关闭]
【发布时间】:2011-10-05 17:24:11
【问题描述】:

我正在为我的 Web 应用程序使用 SSL。使用唯一标识符作为敏感数据的主键会增加任何额外的安全性,还是只会减慢速度?

【问题讨论】:

    标签: sql security web-applications ssl


    【解决方案1】:

    也许,就像纸板锁比纸锁更安全一样。

    如果您通过默默无闻地使用安全性,那么阻止某人看到他们不应该看到的东西的唯一原因是他们不知道主键值,那么是的。它增加了一点安全性。

    也就是说,您的努力会更好地应用于通过肯定的方式锁定数据,而不是依靠用户不猜测 ID。默默无闻的安全性特别容易受到嗅探攻击。

    【讨论】:

    • 我投了赞成票。但有时人们会想,“密码不也是隐秘的安全吗?你依靠密码很难猜到,有什么区别?”我的回答是,每个用户共享相同的密码(或不共享)是一个很大的区别。当他们不共享时,您可以更改或撤销部分但不是全部。另一个区别是密码(通常/希望)不是以明文形式传输的,并且不会被嗅探。你也会这样回答吗?
    • 一个更类似的比较是拥有一个有用户名但没有密码的站点。猜测用户名(或身份值)比猜测用户名和密码的组合要容易得多。尽管如此,从技术上讲,您可以说几乎任何形式的安全都依赖于隐藏某些信息,除非您谈论的是某种物理安全。
    【解决方案2】:

    如果您想知道是否使用 int 与 GUID 进行 PK,Jeff Atwood 有一篇关于该主题的博文可能对您有所帮助。

    http://www.codinghorror.com/blog/2007/03/primary-keys-ids-versus-guids.html

    正如大卫所说,为了可读性,整数键比 URL 更好。特别是如果您认为有人会发推文或链接到帖子或个人资料。 www.site.com/users/233www.site.com/users/C87FC84A-EE47-47EE-842C-29E969AC5131 更容易阅读/输入/p>

    但它确实不会增加太多“安全”优势。

    【讨论】:

    • 作为一般规则,在 URL 或其他任何地方公开公开内部合成数据库标识符是一个坏主意。公开使用自然密钥。例如,不要使用www.site.com/users/233,而是使用www.site.com/users/jsmith
    【解决方案3】:

    如果您谈论的是在 URL 中可见的内容,那么我会说“是的,它有点更好”。

    我这么说的原因是手动操作一个 url 真的很容易,而且只需要一个整数值,你可以很容易地改变它,看看你得到了什么。使用此方法不太可能获得有效的唯一标识符。

    也就是说,可以预测唯一标识符,我相信自动化系统能够破解它。您会增加一定程度的复杂性以使您的网站成为不那么有吸引力的目标,但这并不是解决任何问题的完整解决方案。

    更多信息请见:http://www.google.com/search?q=direct+object+reference&sourceid=ie7&rls=com.microsoft:en-us:IE-Address&ie=&oe=

    恕我直言,增加复杂性的权衡是不值得的,除非你保护的东西真的没有那么有价值。

    【讨论】:

      猜你喜欢
      • 2016-12-27
      • 2015-04-04
      • 2015-09-12
      • 1970-01-01
      • 2021-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多