关于php:为什么网站倾向于在数据库表上使用随机id:s?

Why do web sites tend to use random id:s on database tables?

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

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

谢谢你的帮助!


在引擎盖下,它们可能使用数据库中的增量ID来标识行,但通过URL参数向最终用户公开的值通常被制成一个随机字符串,以使可用对象的序列更难猜测。

这真的是一个通过默默无闻的安全问题。它阻碍了自动化脚本通过增量值进行操作,并试图通过URL进行攻击,还阻碍了网站内容的自动抓取。

例如,如果YouTube使用的是增量ID,而不是像v=HSsdaX4s这样的值,那么只需从v=1开始,并将该值增加数百万次,就可以下载每个ID。


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

另外,您不需要检查新生成的随机ID是否已经存在,您可以假设它不存在(因为其中有很多)。


你确定身份证是随机的吗?或者它们是编码的?不管怎样,都是为了安全。