如果我有一个存储在数据库中的项目,用户可以在购买后下载,我怎样才能提供每个用户不同的链接?
我在想,正确的做法是:给他们一个基于他们的用户ID以某种方式进行哈希的链接,例如。然后,当我处理我给他们的链接时,我只是反转哈希函数获取原始链接。这是正确的做事方式吗?
如果这不是正确的方法,请有人指出我正确的方向吗?
答案 0 :(得分:1)
哈希函数并不意味着可以逆转。我建议阅读有关lighttpd mod_secdownload
实现
它为您提供受保护的链接,在一定时间内有效。由于无法反转哈希,因此您需要在链接中传递信息的哈希值以及明文信息(如果可能)。例如:
http://somesite.com/download.php?hash=<md5($secretkey.$userId.$documentId)>&usrId=<$userId>&documentId=<$documentId>
当您收到下载请求时,请处理该项,将其与给定项进行比较,如果相等,则认为已经过验证。
答案 1 :(得分:0)
您应该在数据库中存储类似“下载令牌”的内容。当用户想要下载某些内容时,您需要创建一个新令牌(例如一个随机数),如果有多个要下载的内容,您可以使用其ID将其绑定到它们。
在URL中,简单地将令牌作为GET变量发送。用户下载内容后,从数据库中删除令牌。