20

我想知道为什么许多网站选择使用随机 id:s 而不是在其数据库表上从 1 递增。我搜索了没有找到任何充分的理由,有吗?

另外,使用哪种方法最好?在插入数据之前检查 id 是否已经存在似乎效率很低(需要第二次查询)。

谢谢你的帮助!

4

3 回答 3

11

在幕后,他们很可能使用数据库中的增量 ID 来识别行,但是通过 URL 参数向最终用户公开的值通常被制成随机字符串,以使可用对象的序列更难猜测.

这实际上是一个通过默默无闻的安全问题。它阻碍了自动化脚本继续执行增量值并尝试通过 URL 进行攻击,并且阻碍了对站点内容的自动抓取。

例如,如果 youtube 使用增量 id 而不是像 之类的值v=HSsdaX4s,您可以通过简单地从该值开始v=1并递增数百万次来下载每个。

于 2012-06-20T12:38:54.143 回答
4

顺序 ID 不能很好地扩展(它们成为分布式系统中的同步瓶颈)。

此外,您不需要检查新生成的随机 id 是否已经存在,您可以假设它不存在(因为它们太多了)。

于 2012-06-20T12:39:59.663 回答
1

你确定id是随机的吗?还是它们被编码?无论哪种方式都是为了安全。

于 2012-06-20T12:40:01.393 回答