tp6用户上传的图片存储目录防木马(限制仅访问图片不可访问php文件)

问题

最近一个旧项目中发现专供用户上传图片的uploads目录因之前上传入口限制不严格导致用户上传了php文件上来,为防止此类问题出现。除了严格限制入口文件的上传类型,又专门对此上传目录的访问权限做了一定限制。使其仅可访问除php文件外的文件类型。即:

访问 http://www.myweb.com/uploads/store/1/test.php 不可访问。会报以下错误:

而访问同目录下的图片文件:http://www.myweb.com/uploads/store/1/1.png,则正常显示。

解决

要限制对某个目录中图片以外的文件(如PHP脚本)的访问,可以通过在服务器配置中设置来实现。根据你的服务器环境和使用的Web服务器软件(如Apache或Nginx),有不同的方法来实现这个需求。下面分别介绍在Apache和Nginx中如何配置:

在Apache中

可以使用.htaccess文件或者修改Apache的配置文件(httpd.confapache2.conf)来限制对目录中PHP文件的访问。

使用.htaccess文件
  1. 确保你的Apache服务器启用了.htaccess支持。

  2. 在你的图片目录中创建一个.htaccess文件,并添加以下内容:

<FilesMatch "\.php$">

Order allow,deny

Deny from all

</FilesMatch>

这将会阻止所有对.php文件的访问。

修改Apache配置文件

如果你希望对整个服务器或特定虚拟主机进行配置,可以在Apache的配置文件中添加以下内容:

<Directory "/path/to/your/image/directory">

<FilesMatch "\.php$">

Order allow,deny

Deny from all

</FilesMatch>

</Directory>

在Nginx中

在Nginx中,你可以通过配置文件来限制对特定目录中PHP文件的访问。

  1. 打开Nginx的配置文件(通常位于/etc/nginx/nginx.conf/etc/nginx/sites-available/目录下的某个文件)。

  2. 在相应的server块中,为你的图片目录添加一个location块,如下所示:

    location ~* \.php$ {
    
    deny all;
    
    }

或者,如果你只想对特定目录进行限制,可以这样配置:

location /path/to/your/image/directory {

location ~* \.php$ {

deny all;

}

}

确保你的Nginx配置文件语法正确,然后重新加载或重启Nginx以应用更改:

sudo nginx -t # 检查配置文件语法是否正确

sudo systemctl reload nginx # 重新加载Nginx配置(或使用其他适合你系统的命令)

通过以上任一方法,你都可以有效地阻止对图片目录中PHP文件的访问,只允许图片文件的访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值