网站内容和成员数据库ID

时间:2017-08-02 23:27:37

标签: php mysql

为什么某些网站被编程为在1处启动成员ID 一些网站开始关注会员ID,如30000000000000000甚至 随机哈希?

例如,流行的论坛软件,如vbulletin,invision power board,xenforo等,其成员ID从1开始。然后你看看蒸汽,例如,查看一个配置文件,看看那个巨大的成员ID。

我还注意到有些网站使用uuids作为基本成员ID。 像mojang(是的,我知道和我在一起)。他们后来为每个人添加了一个UUID 帐户。

每个人的好处是什么?不会从id为1开始使用较少的数据库存储?

1 个答案:

答案 0 :(得分:2)

  1. Steam ID 从0x0110000100000001到0x01100001FFFFFFFF,总是17位数。

    它是蒸汽64,也有不同时间制造的steam2,steam3和steam32版本。它包含的数据不仅仅是序列号,比如它所属的“宇宙”号。我的猜测是,它可能包括地区,国家和其他数据。

    除了Steam ID之外,还有帐户ID,社区ID和其他长度不同的内容 - 这一事实只能确认长度是故意选择的。

  2. 对于普通软件,如论坛和网站,通常不需要执行此类复杂的ID,并且为了优化和简单,使用普通的递增序列号。

  3. 但有时 UUID和其他棘手的哈希值或巨大的随机数将被使用。例如,这种方法有助于避免通过从1爬到N(其中N是最新注册用户的ID)来窃取用户列表,或者允许基于下一个ID的知识来避免时间/ ID增量攻击。

  4. 其他原因为什么可以使用巨大的随机数是通过它们的魔法属性在MIN和MAX值之间均匀分布。使用ServerNumber=ID/((MAX-MIN)/NumberOfServers)公式在N个服务器之间进行数学排列可能会有所帮助。

  5. 还有一个案例要考虑的情况是,有多个服务器可能会创建一个新用户:如果ID只是增量,那么两个服务器将尝试创建的可能性具有相同ID(当前ID + 1)的用户是真实的。但是当你有随机ID或UUID / GUID时,你碰撞的机会就会变为零。

  6. 所以,是的,1 ++ ++ ID最方便工作,但也有很多情况下,其他方法将为您的软件带来巨大的好处。

    我希望你喜欢。