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

时间:2016-01-28 08:38:42

标签: php .htaccess encryption

我必须限制直接下载网络服务器目录中的任何文件。另外,应该允许通过服务器脚本下载生成的加密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(上面显示)的直接访问。因此,没有永久链接可以直接访问。

1 个答案:

答案 0 :(得分:1)

Encryption is almost always a bad choice for URL parameters

而不是http://www.sitename.com/xxxxxxxxxxx.php只需将其设为http://www.sitename.com/download.php?onetimecode=[32 hex characters],并确保使用bin2hex(random_bytes())生成令牌。

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