我已经找遍了所有的地方,但我似乎找不到一个完整的答案.因此,如果stackoverflow上已经有了答案,那么我提前道歉.
我想要一个唯一且随机的ID,这样我网站上的用户就不会猜到下一个数字,而直接跳到其他人的信息.我计划坚持主键的递增ID,但也要在DB中存储该行的随机唯一ID(类似于散列),并在其上放置索引.
通过我的搜索,我意识到我想要避免碰撞,我读到了一些关于SHA1的提及.
我的基本要求是
- 比GUID小的东西.(在URL中看起来很可怕)
- 必须是唯一的
- 避免碰撞
- 不是一长串不可读的奇怪字符.
我正在寻找的一个示例是www.Somesite.com/page.aspx?id=AF78FEB
我不确定应该在数据库(我使用的是SQL Server 2005)还是代码(我使用的是C#ASP.Net)中实现这一点
编辑:
从我所有的阅读中,我意识到这是默默无闻中的安全.我确实打算获得访问这些页面的适当授权和认证.我会用的.Net的身份验证和授权框架.但一旦一个合法用户登录并访问一个legimate(但动态创建的页面),该页面上就充满了指向属于他的项目的链接.例如,一个链接可能是www.site.com/page.aspx?项目id=123.是什么阻止他点击那个链接,然后改变上面的URL进入www.site.com/page.aspx?第456项不属于他?我知道一些Java技术,比如Struts(我需要更正)在会话中存储所有内容,并以某种方式从中解决问题,但我不知道这是如何实现的.