如何只允许php网站的特定IP地址上传文件

问题描述 投票:0回答:1

有人在他们的 Linux、Apache2、MySQL、PHP 网站遭遇钓鱼攻击后联系我。我登录了他们的服务器,添加了防火墙,删除了所有网络钓鱼文件,然后在

file_uploads = Off
文件中设置了
/etc/php/8.1/apache2/php.ini

该网站有很多页面可以让您上传文件。有没有办法让来自一两个特定 IP 地址的用户仍然使用这些页面上传内容?我读到在最新版本的 PHP 中无法使用

if(<valid ip address>) ini_set('file_uploads', 'On');
。我还有其他方法可以考虑吗?


背景

据我所知,他们的网站受到攻击的原因是他们有很多允许您上传附件的 HTML 表单。根本没有表单验证或内容清理。这解释了为什么我在服务器上看到像

danger.zip
unzip.php
这样的文件,其中
danger.zip
包含一堆病毒和网络钓鱼材料,而
unzip.php
是执行操作
unzip(danger.zip);
的网页。


注意,现在当人们想要更新网站内容时我们的流程是这样的:

  1. 使用
    ufw
    防火墙完全阻止所有访问该网站接受内容的人的IP地址的流量
  2. 内容人员需要几个小时才能上传他们想要的内容并进行内容编辑。
  3. 重新加载
    ufw
    防火墙,让公众再次看到该网站。
php apache
1个回答
0
投票

如果你知道的话,我会使用

.htaccess
或 Apache 的主配置文件来限制对基于 IP 地址的上传页面的访问

<Files "upload.php">
    Order Deny,Allow
    Deny from all
    Allow from 123.456.789.000
    Allow from 987.654.321.000
</Files>

此外,您还可以更新您的

header.php
或任何上传文件以检查 IP 是否允许。

$allowed_ips = ['123.456.789.000', '987.654.321.000'];
if (!in_array($_SERVER['REMOTE_ADDR'], $allowed_ips)) {
    die("You are not allowed to upload files.");
}
© www.soinside.com 2019 - 2024. All rights reserved.