创建个性化下载链接。

3
如果我在数据库中存储了用户购买后可以下载的项目,那么如何为每个用户提供不同的链接呢?
我考虑过,是否正确的做法是:根据他们的用户ID生成一个哈希链接。然后,当我处理他们所得到的链接时,只需反转哈希函数即可获得原始链接。这是做事情的正确方式吗?
如果这不是正确的方法,能否有人指点一下?
2个回答

1

哈希函数并不是用来进行反向操作的。我建议你阅读一下lighttpd mod_secdownload 的实现方式。

它可以为你生成一个受保护的链接,只在特定时间内有效。因为哈希无法反向操作,所以你需要将信息的哈希值与明文信息(如果可能的话)一起包含在链接中。例如:

http://somesite.com/download.php?hash=<md5($secretkey.$userId.$documentId)>&usrId=<$userId>&documentId=<$documentId>

当您收到下载请求时,请处理哈希值并将其与给定的哈希值进行比较,如果相等,则视为已验证。

0
你应该在数据库中存储类似于“下载令牌”的东西。当用户想要下载某些东西时,你可以创建一个新的标记(例如一个随机数),如果有多个事情需要下载,可以将其绑定到它们的ID上。
在URL中,只需将令牌作为GET变量发送即可。一旦用户下载了内容,请从数据库中删除令牌。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接