我知道有关此主题的类似帖子,但我无法弄清楚。因为我是这个领域的新手。
www.example.com/sdf3r234/dfsf3434fd368jmnvnbvb34.rar
我的网站已准备就绪,这是最后一部分,也是最具挑战性的部分。重要部分。我不知道该读什么或做什么。
答案 0 :(得分:4)
使用linux符号链接。将您的rar文件保存在一个单独的位置,无法从Internet访问。在文档根目录中创建一个指向所需rar文件的符号链接,添加到包含日期和时间的数据库表中,并在48小时后删除记录和符号链接。
如果您不能/无法使用数据库,请在符号链接名称中包含日期和时间,并每小时运行一次脚本进行清理,使用glob()来检索符号链接列表,解析日期和从文件名开始的时间,然后决定要删除哪些。
关于ln
命令:
ln -s /home/myuser/rarstorage/originalrarfile.rar /var/www/download/201712171536randomcharacters.rar
我假设您的rar文件存储在/home/myuser/rarstorage
中。无法从任何网址访问此目录。
我认为您的网站位于/var/www
。
ln
命令会在originalrarfile.rar
内创建指向/var/www/download
的符号链接。在我的例子中,我将格式为yyyymmddhhii的日期和时间包含在符号链接名称中。
如果您有shell访问权限,请手动尝试。
您可以使用symlink() PHP命令获得相同的结果。
要检查下载是否过期,请使用glob()功能列出所有符号链接。 你有一个文件数组。解析每个名称并转换为日期和时间,与当前日期和时间进行比较,确定是否必须删除符号链接。
您应该每小时查看过期文件,因此如果您的托管不允许使用cron,您最好使用cronjob或以其他方式模拟它。
如果您的提供商不允许文档根目录之外的目录,只需在文档根目录中创建rarstorage
目录,并使用此.htaccess文件阻止对它的任何访问:
deny from all
答案 1 :(得分:0)
您可以将过期日期添加到您的URL并在PHP中检查 - 如果日期是将来,请提供文件,否则将失败。是的,在这种简单的方法中,攻击者可能只是篡改数据并更改过期日期。因此,您可以添加另一个包含日期安全哈希的URL参数和仅由您知道的秘密 - 如果哈希丢失或散列密码且您的过期日期与提供的哈希不匹配,则不得提供该文件。
这比Ghigo的方法容易一些,因为你不需要数据库