3

我想要实现的是为用户创建一个一次性的视频链接。他们观看链接过期的视频的人可以说链接在其原始创建后 1 小时内过期。

问题是如何去做。我可以使用 mod_rewrite 将值动态传递给 PHP 和 SQL

所以让我们说

mysite.ltd/get_video/Jn12lM2NMZ21oMW312/11111111/The-Amazing-Spider-Man.mp4

细分:get_videoget_video.phpJn12lM2NMZ21oMW312是临时令牌,11111111是时间戳,The-Amazing-Spider-Man.mp4是文件名。

根据我的结论,令牌+时间戳将在视频页面访问时生成并插入 SQL,如果用户共享视频链接,其他人将无法访问它,因为令牌验证将失败,即 get_video 比较当前的哈希 IP用户和 SQL 中的哈希令牌。

这是我对如何做到这一点的看法,但我想知道是否有人有更好的解决方案。

4

2 回答 2

0

您甚至不需要保存令牌和时间戳。您想要的是用户 IP 地址的哈希、时间戳和一些不错的长秘密盐(最好为每个用户唯一生成):

$token = somehash($ip_address . $timestamp . $secret);

$url = 'http://xxx/' . $token . '/' . $timestamp . '/filename';

用户访问 URL 后,您将使用用户数据重放散列。如果相等且请求尚未过期,则提供视频。

于 2013-02-03T02:31:26.903 回答
0

你得到了正确的代币部分。令牌应仅对当前会话有效,或者如果此链接用于同一页面上的流式视频,则只需为每个请求生成令牌。为了生成安全令牌,您可以使用一些我更喜欢存储在您的 config.php 中的秘密 salt 变量,基本上任何框架都会为您生成 salt。

通常您将带有 ID 的视频/文件名存储在数据库中。所以构造文件路径,验证令牌,你可以强制下载标题和readfile()签出第一条评论,那里有很多代码。这样,没有人会知道您文件的位置。

于 2013-02-03T02:37:10.143 回答