gpt4 book ai didi

php - 防止 IP 在服务器上多次下载文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:25:08 25 4
gpt4 key购买 nike

我有一个程序,用户可以通过发布到 php 页面的按钮从我的站点下载该程序。 php 将下载请求记录到我的数据库中,然后提供实际程序供他们下载。然而,我不时注意到某些 IP 会每半小时下载一次该程序……有时在很多天里会下载数百次。不确定它是什么,假设它是一个机器人,并且 IP 总是在罗马尼亚或匈牙利等国家。

最初我在我的 .htaccess 中阻止 IP,但我不想每次都这样做。所以我在我的 php 中添加了代码,它只允许用户每天下载特定次数的程序。这工作正常,但是,对于某些人来说,只需获取我的程序的直接 URL 并以绕过 php 逻辑的方式下载它就足够容易了。

1) 有什么办法可以防止这种情况发生吗?可以修改 .htaccess 以防止直接下载文件但允许我的 php 提供它吗?

2) 我什至应该为此担心吗?我使用的是共享服务器,所以我真的只关心带宽影响。

最佳答案

如果您不想让用户绕过 PHP 逻辑,您可以使用 PHP 脚本呈现和输出文件。

<?php
$file = some file from query;

if (some logic matches)
die('Download forbidden');

if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
?>

参见:http://php.net/manual/en/function.readfile.php

假设你的文件存放在/files/中,将脚本放在/down.php这样的地方,在中的.htaccess中添加如下代码/文件/

Deny from all

更多关于这个,你可以看:Deny access to one specific folder in .htaccess

此外,如果你真的很关心带宽,你可以增强你的禁止下载逻辑,比如创建用户系统,或者将用户IP放入数据库来管理/限制每个用户的总下载带宽。

关于php - 防止 IP 在服务器上多次下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41948085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com