【问题标题】:What is best practice for 'private' public URLs?“私有”公共 URL 的最佳做法是什么?
【发布时间】:2009-03-11 16:13:34
【问题描述】:

生成可公开访问但通过侧通道共享的 URL 的最佳做法是什么,以便在实践中它对共享它的组来说是私有的?

类似:

http://example.com/club/XX-XX-XX-XX
http://example.com/club/YY-YY-YY-YY

其中 XX-XX-XX-XX 由一个组共享,而 YY-YY-YY-YY 由另一个组共享。如果你有一个有效的代码,应该不容易猜到其他的有效代码。

URL 不需要其他安全措施。

【问题讨论】:

  • 随机数似乎是一个不错的候选,但它应该有多大?

标签: web-services url private access-control


【解决方案1】:

GUIDs 始终是唯一 ID 的不错选择,并且非常容易生成(但看起来很难看)

【讨论】:

  • 一个 guid 包含 128 位信息。如果我们假设网络服务器每秒可以处理 10K 请求,那么猜测者将需要超过 1x10^27 年的时间来依次尝试每种可能性。这似乎太过分了,所以比 GUID 更短的东西对我来说听起来更好。
【解决方案2】:

考虑使用 Amazon S3,它们有时间限制的公开 URL。

【讨论】:

    【解决方案3】:

    我建议生成一个 UUID。如果您的后端是 Java,您可以使用 Java 的 java.util.UUID 和 URLEncode/Decode 其文本表示。如果您使用的是 ASP.NET,我敢肯定 .NET 中也有等价物。

    【讨论】:

      【解决方案4】:

      要生成 URL 的路径部分,请使用某种形式的哈希(SHA1 可以)。当然是随机的。 chmod 文件所在目录到 711 (rwx--x--x)

      【讨论】:

        【解决方案5】:

        您在复杂性和可读性(甚至是可记忆性)之间进行权衡。 GUID 提供了一个“独特”的代码,如前所述,它很容易生成,但可读性和记忆性很低。任意拆分的随机字符串也可能提供解决方案。最后,随机选择的英文单词更容易记忆和交流,并且可能仍然提供相同程度的隔离和保护。

        毕竟,除非您的用户特别勤奋并且禁用地址历史记录和浏览器历史记录,否则 URL 将在那里供所有人查看谁随后访问了该计算机。

        【讨论】:

          【解决方案6】:

          字母数字字符的随机序列可以完成这项工作。从 26 个小写字母、26 个大写字母和 10 个重复十几次的数字中选择的字符应该足以满足您的需要。

          【讨论】:

            猜你喜欢
            • 2010-09-27
            • 1970-01-01
            • 2011-06-01
            • 1970-01-01
            • 2020-06-10
            • 2020-01-25
            • 2011-07-10
            • 2013-04-16
            • 1970-01-01
            相关资源
            最近更新 更多