我有一个用户登录的页面,然后它显示了他购买的所有文件。
我想当他点击下载文件按钮时这样做,它会立即下载文件。
问题:
用户只需复制链接并将其传递给他的朋友,然后每个人都可以下载此文件。
问题
我如何保护下载,以便用户可以随时下载他的文件,但其他人不能,他们必须先购买。
我的想法:
当用户点击下载链接时,它会生成一个链接然后下载文件,该链接将在 10 秒后立即删除。
但我不确定它是否足够好,不安全或根本如何做到这一点..
有任何想法吗?
我有一个用户登录的页面,然后它显示了他购买的所有文件。
我想当他点击下载文件按钮时这样做,它会立即下载文件。
问题:
用户只需复制链接并将其传递给他的朋友,然后每个人都可以下载此文件。
问题
我如何保护下载,以便用户可以随时下载他的文件,但其他人不能,他们必须先购买。
我的想法:
当用户点击下载链接时,它会生成一个链接然后下载文件,该链接将在 10 秒后立即删除。
但我不确定它是否足够好,不安全或根本如何做到这一点..
有任何想法吗?
一种方法是,通过 PHP 脚本代理它,而不是给出文件的“直接”链接。确保文件在 webroot之外,这样他们就无法获得指向它的直接链接。您的 PHP 脚本可以访问该文件,但 Web 浏览器不能。
当用户单击链接时,脚本将检查他们是否已登录,然后是否允许他们访问该文件。如果他们可以访问该文件,则将文件(带有正确的标题)发送到浏览器,否则抛出错误。
像这样的东西:
<?php
session_start();
// Figure out if user is logged in and if they can download the file
if($_SESSION['loggedin'] && can_download($file)){
header('Content-Type: '.mime_content_type($file));
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: no-cache');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
else{
header('HTTP/1.0 403 Forbidden');
die('You are not allowed to access this file.');
}
您可以使链接需要有效的登录会话,但这无关紧要,可能不会实现任何目标。
如果他想与他的朋友分享文件,他可以下载并通过 Skype 发送文件或上传到 4Shared。除了在文件上实施某种 DRM 之外,您所做的任何事情都不会阻止用户共享它。
您可以为登录的用户创建一个会话 ID,在您的数据库中对其进行跟踪,并且只允许从具有匹配会话 ID 的用户那里下载。
或者
页面需要认证,只有经过认证的用户才能下载
或者
当用户购买/注册时,有一个表允许他们访问特定资源,并且只允许访问资源的用户 ID 下载
或者
使用 AJAX 链接到检查上述任何内容的页面而不是直接链接,这样您就可以分发链接并仍然执行检查
只是一些想法。