在url中隐藏主键数据库的最佳做法是什么?

时间:2013-07-10 11:01:11

标签: web key hidden

实际上,我在我的网络应用程序中有这个URL http://mydomain.fr/user/1。我认为这不是很安全

我会隐藏id为auto_increment。

无法做到这一点:

http://mydomain.fr/user/1
http://mydomain.fr/user/2
http://mydomain.fr/user/3
http://mydomain.fr/user/4
http://mydomain.fr/user/[...]

我不知道使用哪种技术......

  • 存储在主键旁边的哈希MD5
  • UUID / GUID

我使用MySQL。

4 个答案:

答案 0 :(得分:0)

您应该根据身份验证限制对URL的访问。只是让“难以猜测”ID将阻止某人访问其他用户的页面,或者例如删除意外用户。基本上,任何人都可以访问任何URL,除非您提供一些访问控制。

答案 1 :(得分:0)

我认为为用户生成随机唯一字符串是最好的方法。 只需使用sha1 hash就可以了。

答案 2 :(得分:0)

OP可能会涉及泄露主键,因为它可能会将信息泄漏到存在多少特定资源。

例如,如果他正在构建一个Web应用程序并且有人创建了一个帐户并且看到了domain.fr/user/23的网址,他们就会知道他们已经在应用程序较少的应用程序上创建了一个帐户。

我的建议是使用上面建议的GUID值或限制为唯一的用户名。

如果使用GUID,它看起来会很难看,但请确保不要只使用开头部分,因为前60位基于时间戳,因此可能会大大增加冲突的可能性。

如果您使用唯一的用户名,则您的网址将类似于domain.fr/user/username

我知道这很容易在RoR上完成。

答案 3 :(得分:0)

无法正确隐藏它,您可以使用长随机哈希字符串生成唯一ID,这对客人来说更难。基本上,这不会阻止某人访问其他人的身份。