2011-03-07 25 views
0

我意识到这可能是一个问题的再现从'09 OLD LINK哈希一个UID,但想看看是否有更好的办法现在要做的:有道使用PHP

最终我有以下网址:

www.site.com?ID=12345(我的身份证要比这复杂得多)。这就是说,理论上有人可以简单地改变URl并访问其他人的数据(是的,我也可以在另一侧运行所有权认证)。最终,我想散列初始数据,将其作为ID值 - 然后在服务器处理脚本(链接到的页面)上,反转散列并使用该成员的UID。

+0

你在说什么不是哈希 - 它是加密/解密。 – 2011-03-07 21:33:51

+0

@middaparka - 对 - 我只是不想让任何人认为我很在乎像AES或任何东西一样在这里疯狂。只是想要一些不容易被发现的基本东西。 – JM4 2011-03-07 21:35:21

回答

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

你试图做的事听起来像是错误的方法,除非你只是试图混淆事情(这似乎有点毫无意义,如果我是诚实的)。

我很想试着向URL添加一个额外的元素 - 一个授权密钥,这个密钥在ID生成时随机生成,并与ID一起存储(可能在数据库中),但不会是根据ID生成。 (类似md5(uniqid)可能会做的伎俩。)

因此,根本不可能有人猜测的ID和密钥。

+0

的主要问题是在数据认证(确保用户能够访问某些信息)时,它需要调用一个存储过程,该存储过程使用大量的系统资源(因为它超越了层次树结构以确保事物'好')。每次呼叫该页面时,该呼叫将被执行10-15次。 – JM4 2011-03-07 21:46:04