建立一个网站:我应该在URL中使用数字或随机唯一字符串作为ID吗?

时间:2013-05-12 22:08:38

标签: spring security web

您好我正在使用Java和Spring框架构建一个Internet网站。我相信我的问题不是技术或框架相关的。

我需要在用户界面中有链接,以便访问者可以点击并查看记录。这些链接的格式为

http://mysite.com?id=number-id-or-random-unique-string

并非所有记录都可以查看。对于URL中的ID参数,我可以使用数据库生成的数字作为ID值,因此我不需要进行额外的编程。或者我可以使用唯一的随机字符串(例如:jcTDjhdDUls)作为ID值(我必须对此部分进行编程)。数字允许好奇的人(有好的或坏的意图)轻松猜测并尝试其他ID。在这方面,独特的随机字符串似乎更好。

但是,无论数字或字符串是ID的值,我都会在后端代码中进行安全检查,以查看是否允许访问者查看记录。从这个角度来看,我不确定将随机字符串作为ID的真正好处是什么。

我希望得到有经验的人的意见。你选择什么样的设计决定?还是其他更好的想法?

谢谢和问候。

1 个答案:

答案 0 :(得分:4)

如果你愿意,你当然可以,但我不会麻烦随机化ID。这是根本原因,“通过默默无闻的安全(STO)。”有时STO是有用的,但在这种情况下,我认为值得使代码和内存占用复杂化和膨胀是不值得的。使用像Burp Suite这样的工具,可以很容易地枚举有效ID,无论它们是否随机化。所有真正重要的安全控制都应该在后端实现。