如何创建 "secure" link(标识符)?

How to create "secure" link(identifier)?

如果我有一些资源(例如图像),并且我希望只有拥有 link 权限的人才能访问它,该怎么办?如何生成这样的link(identifier)? UUID适合这个吗?

这正是 unlisted videos 在 YouTube 中的工作方式。人们只有拥有 link 才能看到不公开的视频,但您无法阻止他们分享 link.

因此,没有必要使用 UUID(实际上是一个 128 位数字),这会导致巨大的 URL。即使是 YouTube 标识符也只相当于大约 64 位。如果你只有 256 个未列出的 URL,你想对不经意的观察者隐藏,那么一个具有 2^40 种可能性的随机数(例如,一个 10 位十六进制数或 8 位 base-32 数)将是绰绰有余,除非你真的想打败需要十亿次猜测才能成功找到一个未列出资源的暴力攻击。

另请记住,您未列出的资源中的任何外部 link 也可以通过 Referer headers, not just from HTML hyperlinks but also from the inclusion of external resources like Javascript libraries and web fonts. Using the robots exclusion standard 进行追溯,这在这方面可能会有所帮助。