我想保护我网站上的直接下载(复制/粘贴链接)。 我发送电子邮件中的下载链接,链接就像它目前可以通过直接链接输入访问,但我希望它只在单击电子邮件链接时才能工作,我知道这可以通过检查会话变量来完成,但问题是我没有任何登录模块。
答案 0 :(得分:4)
如果客户的IP必须在同一会话中下载,您可以根据客户端的IP创建一个特殊的访问令牌。
e.g。
$downloadKey = md5($filename . '_' . $_SERVER['REMOTE_ADDR']);
$_SESSION[$downloadKey] = $downloadKey;
// Include download link with key=$downloadKey
然后,处理ZIP下载的PHP代码可以重新哈希请求的客户端IP和文件名,以查看它是否与会话值匹配。如果匹配,则可以继续下载。
$request = md5($requestedFilename . '_' . $_SERVER['REMOTE_ADDR']);
if (isset($_SESSION[$request]) && file_exists($requestedFilename)) {
{
// stream file
unset($_SESSION[$request]);
}
else {
// 401 unauthorized
}
这假设已经从网上看不到zip文件,并且您正在打开并从PHP脚本中流式传输它。
答案 1 :(得分:1)
如果你有电子邮件/文件名,你不需要任何“登录模块”(你如何收到这些电子邮件是另一个问题)
简单:为每个电子邮件地址+文件名创建唯一链接(例如)https://example.com/download.php?file=ENCRYPTED_EMAIL_FILE_NAME,发送链接。
download.php脚本解密点击的$ _GET ['file'],并将其发送到具有正确标头的浏览器。如果解密失败,请显示404,登录黑客尝试或类似的事情。
如果你没有电子邮件,那么,也许你应该学习一些关于CMS /框架/数据库等的知识。