我应该使用什么作为“魔法”?或“秘密”在我的图片网址中?

发布于 2024-10-15 20:04:34 字数 676 浏览 2 评论 0原文

世界上任何知道完整资产 URL 的人都可以查看 Facebook 照片。每个 URL 都包含个人资料 ID、照片资产 ID、请求的大小以及防止暴力访问尝试的魔法哈希值。例如

/{profile-id}_{photo-id}_{magic}_{size}.jpg

http://profile.ak .fbcdn.net/hprofile-ak-snc4/hs443.snc4/50270_68310606562_2720435_n.jpg

Flickr对其URL做了类似的事情。一旦您知道照片的 ID、服务器 ID、场 ID 和秘密(由许多 API 方法返回),您就可以构建照片的源 URL。

URL 采用以下格式:

http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{secret}.jpg

Facebook 和 Flickr 使用什么来发挥其“神奇”或“秘密”价值?随机生成的数字?图像的哈希值?配置文件和图像的哈希值?序列号?我应该用什么?

Facebook photographs are viewable by anyone in the world aware of the full asset URL. Each URL contains a profile ID, photo asset ID, requested size, and a magic hash to protect against brute-force access attempts. Something like:

/{profile-id}_{photo-id}_{magic}_{size}.jpg

For example:

http://profile.ak.fbcdn.net/hprofile-ak-snc4/hs443.snc4/50270_68310606562_2720435_n.jpg

Flickr does something similar with their URLs. You can construct the source URL to a photo once you know its ID, server ID, farm ID and secret, as returned by many API methods.

The URL takes the following format:

http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{secret}.jpg

What are Facebook and Flickr using for their "magic" or "secret" value? A randomly generated number? A hash of the image? A hash of the profile and the image? A sequence number? What should I use?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

执笏见 2024-10-22 20:04:34
  • 哈希值不应该是完全随机的数字,否则您将需要保留一个关联表,将每个资产链接到这样的数字。
  • 哈希值不应取决于照片的实际位,否则您需要获取照片来重新计算哈希值,这可能是几兆。
  • 哈希值应取决于生成任何页面时可用的信息:用户 ID、资产 ID,可能还有农场 ID。它应该很容易计算。但这不应该是微不足道的猜测。它几乎是加密哈希的定义。

因此,我会将可用的 ID 组合成足够长的位字符串,并将其提供给 MD5 或 SHA1,并使用中间足够的数字作为秘密哈希。或者,我可以使用移位、加法和异或组合 ID 来创建例如 64 位值,然后使用该值作为 线性同余随机数生成器,具有已知参数,可在多次迭代中生成哈希值。

  • The hash should not be a totally random number, or you will need to keep an association table linking every asset to such a number.
  • The hash should not depend on actual bits of the photo, else you'll need to fetch the photo to recalculate the hash, and this may be a few megs.
  • The hash should depend on information readily available at time of generation of any page: user ID, asset ID, maybe farm ID. It should be easily computable. But it should not be trivial to guess. It's almost a definition of a cryptographic hash.

So I'd combine available IDs into a long enough bit string and feed it to MD5 or SHA1, and used enough digits from the middle as the secret hash. Alternatively, I'd combine the IDs to create a e.g. 64-bit value, using shifts, addition, and xor, then use that value as a seed for a linear congruential random number generator with known parameters to produce the hash in several iterations.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文