仅允许使用活动会话下载文件



是否可以将服务器上的文件/目录的首选项设置为不可下载,但是如果用户有会话,他可以访问文件并可以下载它们。

我知道我可以用$_SESSION禁用"下载按钮",例如:

$downloadbutton = "<a href='abc.jpg'>Download</a>";
if($_SESSION["xy"] == "abc"){
    echo $downloadbutton
}

但是可以通过www.url.com/directpath/abc.jpg访问该文件

那么如何保护文件呢?

要更好地控制下载,您可以使用以下功能:

function makeDownload($file, $dir, $type) {
header("Content-Type: $type");
header("Content-Disposition: attachment; filename="$file"");
readfile($dir.$file);
}

如果您想确保下载访问,则永远不应该从原始URL实际提供文件,请始终使用文件代理。这样,用户永远不会看到文件的来源,只能使用您的代理脚本,您可以在其中控制是否可以提供该文件。

如果你环顾四周,有大量的脚本已经专门编写了。您可以在此处找到其中之一,并将会话验证添加到其中。

您可以通过在.htaccess中检查PHPSESSID cookie来限制直接访问:

RewriteEngine on
RewriteCond %{HTTP_COOKIE} PHPSESSID=[^;]
RewriteRule .* - [L]
RewriteRule .* - [F,L]

更好的 SetEnv 示例:

SetenvIf Cookie PHPSESSID=[^;] permit
Allow from env=permit
Deny from all

相关内容

  • 没有找到相关文章

最新更新