【问题标题】:What should I use as the "magic" or "secret" in my image URLs?我应该在图片 URL 中使用什么作为“魔法”或“秘密”?
【发布时间】:2011-02-05 03:55:19
【问题描述】:

世界上任何知道完整资产 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。

网址采用以下格式:

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

Facebook 和 Flickr 的“魔法”或“秘密”价值是什么?随机生成的数字?图像的哈希?个人资料的散列图像?序号?我应该使用什么?

【问题讨论】:

  • 他们可能使用随机值来避免从他们的服务器上抓取图像。

标签: image facebook filenames flickr


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

所以我将可用的 ID 组合成一个足够长的位串并将其提供给 MD5 或 SHA1,并使用中间足够的数字作为秘密哈希。或者,我会结合这些 ID 来创建一个例如64 位值,使用移位、加法和异或,然后使用该值作为具有已知参数的 linear congruential random number generator 的种子,以在多次迭代中生成哈希。

【讨论】:

    猜你喜欢
    • 2013-07-02
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多