如何让用户临时访问特定链接?
How to give users temporary access to specific links?
我看到人们经常这样做,通常是在嵌入视频时。
它们具有时间戳或 GET 值中的某些内容的链接,允许用户临时访问文件。
我目前只有我的 .htaccess 文件有 Options -Indexes
(只是这样他们根本无法访问目录。我知道这没有多大帮助)
我是否应该制作一个 PHP 脚本来存储在 sql 数据库中与 IP 匹配的特殊 ID,时间戳在 30 分钟后过期?我不知道这是否是解决此问题的最有效方法。
执行此操作的最佳方法是什么?
您可以使用时间戳+保护哈希,示例:
当您创建 link 时,您会执行如下操作:
define('SECRET',"onlyknownbyyourserversidescipt");
$now = time();
$protect = md5($now.SECRET);
$link = 'http://what.ever/?'.http_build_query(array('t'=>$now,'p'=>$protect));
打开 link 时检查时间是否与受保护的
if(md5($_GET['t'].SECRET) === $_GET['p']){
//then you can check the time
if(time()-$_GET['t'] > 30*60){
header(..)
}else{
header(..)
}
}
没有人可以伪造时间戳,因为没有人知道你的秘密
我看到人们经常这样做,通常是在嵌入视频时。
它们具有时间戳或 GET 值中的某些内容的链接,允许用户临时访问文件。
我目前只有我的 .htaccess 文件有 Options -Indexes
(只是这样他们根本无法访问目录。我知道这没有多大帮助)
我是否应该制作一个 PHP 脚本来存储在 sql 数据库中与 IP 匹配的特殊 ID,时间戳在 30 分钟后过期?我不知道这是否是解决此问题的最有效方法。
执行此操作的最佳方法是什么?
您可以使用时间戳+保护哈希,示例:
当您创建 link 时,您会执行如下操作:
define('SECRET',"onlyknownbyyourserversidescipt");
$now = time();
$protect = md5($now.SECRET);
$link = 'http://what.ever/?'.http_build_query(array('t'=>$now,'p'=>$protect));
打开 link 时检查时间是否与受保护的
if(md5($_GET['t'].SECRET) === $_GET['p']){
//then you can check the time
if(time()-$_GET['t'] > 30*60){
header(..)
}else{
header(..)
}
}
没有人可以伪造时间戳,因为没有人知道你的秘密