我想要实现的是为用户创建一次性视频链接。他们看到链接过期的视频让我们说链接在原始创建后的1小时内到期。
问题是如何去做。我可以使用mod_rewrite将值动态传递给PHP和SQL
所以我们说
mysite.ltd/get_video/Jn12lM2NMZ21oMW312/11111111/The-Amazing-Spider-Man.mp4
细分:get_video
为get_video.php
,Jn12lM2NMZ21oMW312
为临时令牌,11111111
为时间戳,The-Amazing-Spider-Man.mp4
为文件名。
根据我的结论,令牌+时间戳将在视频页面访问时生成并插入到SQL中,如果用户共享视频链接,其他人将无法访问它,因为它会在令牌验证失败,这是get_video比较哈希当前用户的IP和SQL中的哈希标记。
这是我对如何做到这一点的看法,但我想知道是否有人有更好的解决方案。
答案 0 :(得分:0)
您甚至不需要保存令牌和时间戳。你想要的是用户的IP地址的哈希值,时间戳和一些不错的长秘密盐(最好是为每个用户唯一生成):
$token = somehash($ip_address . $timestamp . $secret);
$url = 'http://xxx/' . $token . '/' . $timestamp . '/filename';
用户访问该网址后,您会使用该用户的数据重播该哈希值。如果相等且请求未过期,请提供视频。
答案 1 :(得分:0)
你得到了令牌的权利。令牌应仅对当前会话有效,或者如果此链接用于在同一页面上流式传输视频,则只为每个请求生成令牌。为了生成安全令牌,你可以使用一些我更喜欢存储在你的config.php中的秘密盐变量,基本上任何框架都为你生成盐..
通常您将带有ID的视频/文件名存储在数据库中。所以构建文件路径,验证令牌,你可以强制下载标题和readfile()签出第一个评论,那里有很多代码。这样,没有人会知道你文件的位置。