使用PHP散列UID的正确方法

时间:2011-03-07 21:32:08

标签: php authentication encryption hash

我意识到这可能是'09 OLD LINK的问题的重现,但想看看现在是否有更好的方法:

最终我有以下网址:

www.site.com?ID=12345(我的身份比这复杂得多)。

话虽这么说,理论上有人可以简单地改变URl并访问其他人的数据(是的,我也可以在另一方运行所有权认证)。

最终,我想散列初始数据,将其作为ID值 - 然后在服务器处理脚本(链接到的页面)上,反转哈希并使用该成员的UID。

2 个答案:

答案 0 :(得分:1)

两种选择 - 使用PHP的加密/解密功能来隐藏实际的UID。或者将UID的散列版本与普通UID一起存储在数据库中。

你可以运行像

这样的查询
SELECT blah,blah
FROM table
WHERE MD5(id) = 'the query string value'

但是这不允许使用索引,因此最好做

...
WHERE hashed_id = 'the query string value'

代替。

答案 1 :(得分:1)

你试图做的事情听起来像是错误的方法,除非你只是试图稍微模糊一些事情(如果我是诚实的话,这似乎有点无意义。)

我很想在URL中添加一个额外的元素 - 一个授权密钥,它会在生成ID时随机生成并与ID一起存储(可能在数据库中),但不会生成基于ID。 (类似md5(uniqid)之类的东西可能会起作用。)

因此,人们根本无法猜出ID和密钥。