我听说人们在互联网上到处都是演讲,这是使Web应用程序中面向公众的数据库ID晦涩难懂的最佳实践。我想它们主要是形式和网址的意思,但是我从没读过太多关于这个主题的文章。
编辑:当然,现在我问这个问题,我发现了一些有关该主题的资源:
- /programming/2374538/obscuring-database-ids
- /programming/1895685/should-i-obscure-primary-key-values
- http://joshua.schachter.org/2007/01/autoincrement.html
这些链接满足了我的一些好奇心,但是SO帖子的选票并不多,而且在这种情况下不一定围绕该主题展开,因此我不确定该怎么做,其中一些声称第三个链接是虚假的。我将保留我的其余帖子:
我了解模糊性和安全性之间的区别,以及两者如何协同工作,但是我无法想象为什么这样做是必要的。
这有什么道理吗,仅仅是偏执狂,还是完全虚假?
我可以想到实现此目标的方法,但是当然,这会增加应用程序代码的复杂性。在什么情况下有用?如果这是一些人经常做的,它怎么通常部署?散列标识符?还有吗 似乎需要大量额外的安全性才能完成大量工作。我并不是在寻找真正的解决方案,我只是想了解人们在现实世界中将如何/为什么这样做。
这是否真的被认为是“最佳实践”,还是仅仅是微不足道的微优化?
注意:我认为有些人可能会得出错误的主意:我并不是在建议难以猜测的id是唯一的安全机制,显然会有通常的访问检查。让我们假设它们已经就位,并且仅仅知道记录的ID或哈希ID不足以授予访问权限。