如何加密URL并限制直接下载PHP和/或.htaccess中的文件


How to encrypt URL and restrict direct download a file in PHP and/or .htaccess?

我必须限制直接下载网络服务器目录中的任何文件。此外,应允许通过服务器脚本下载加密URL。

例如

文件的目录路径:/home/downloads/password.txt

网址: http://www.sitename.com/downloads/password.txt

必须限制对 URL 的直接访问。但是,应该允许通过服务器生成的加密URL下载。

例如

<a href="http://www.sitename.com/xxxxxxxxxxx.php">Download</a>

控制下载的实际服务器脚本将是,

http://www.sitename.com/private/download.php

但是,应限制对该 URL(如上所示)的直接访问。因此,将没有直接访问的永久链接。

加密几乎总是 URL 参数的糟糕选择。

与其http://www.sitename.com/xxxxxxxxxxx.php不如让它http://www.sitename.com/download.php?onetimecode=[32 hex characters]并确保使用bin2hex(random_bytes())来生成令牌。

将您尝试保护的实际数据存储在文档根目录之外,以防止直接对象访问,仅允许有效的一次性代码提供对此代码的访问权限。