4

我总是在我的数据库中包含一个具有自动增量功能的列 ID。有什么理由我不想将其用作社交网站的用户 ID。该 ID 将为公众所知并在 URL 中使用,等等。认为这比添加另一个功能来为成员创建单独的唯一 ID 更容易。在我在代码中使用它之前,只是想看看其他人是否发现了任何问题。

4

4 回答 4

2

我还认为,这是解决基本问题的规范方法。

它还使链接到具有其他用户 ID 的其他站点变得微不足道:只需有一个带有用户 ID 的表(如您所描述的)、其他站点 ID(来自foreign sites表)、用户 ID 即可在那里使用。

我观察到的唯一缺点是,当一些脚本小子使用 n、n+1、n+2... 来测试具有易受攻击密码的用户 ID 时。虽然随机 ID 使这变得更加困难,但我个人认为,这应该在其他地方处理。

于 2012-11-26T23:58:18.340 回答
2

id 本身会泄漏信息,使第三方能够估计他或她在您的网站上注册的日期。因此,如果 Alice 是 Bob 的朋友,并且知道她去年注册并且他在 3 天后关注并且她的 id 是 100,而他的 id 是 150,她就会知道 Carol,她不是她的朋友,当时在您的网站上注册了,并且不像 Carol 声称的“最近”,她试图找一个借口来解释为什么她在你的社交媒体网站上与 Alice 不是“朋友”!

这是一个问题吗?您将自己决定,但就我个人而言,我更愿意有点专业/偏执(这两个经常在一起,无论这对我们的职业意味着什么!)并避免在 URL 中包含自动增量 ID,即使是最轻微的安全性/隐私问题。或者至少,建议你成为:-)

如果您决定走 Virtue 的道路,您可能需要考虑其他 id 也会泄漏信息(例如,如果 Alice 发现她的个人资料 id 比 Bob 的数字小,她会比她声称的更早认识 Carol)。因此,虽然您似乎可以添加一个 GUID 列,并将其用作辅助 id,可以安全地包含在 URL 中,但您最好从自动增量 id 切换到使用 GUID。(有关 GUID 的更多信息:http ://en.wikipedia.org/wiki/Globally_unique_identifier )

希望有帮助:-)

于 2012-11-27T00:17:30.447 回答
1

我认为这是一个完全有效的方法。如果您想支持用户的唯一 ID(例如,如果他们想要唯一的 user_id),您可以稍后将其作为单独的列添加到用户表中。

于 2012-11-26T23:51:43.043 回答
1

不,您没有理由不想将其用作 user_id。

如果您将其他一些列设置为 id,您将遇到以下问题:

  • 如何生成用户ID
  • 如何检查表中是否有可能的重复ID

此外,如果您通过主键(也是 AUTO_INCREMENT)执行 SELECT 过滤,则在表中查找特定用户会快得多。

于 2012-11-26T23:52:01.083 回答