兄弟们!昨天被叔叔上门问话啦 !你们是如何做的文件上传校验呢?

做的网站在storage目录下多了个index.php 文件,可以通过我们的域名访问到非法网站。
大家在文件上传功能中是怎么校验的呢?
有什么包可以实现非法文件的校验么?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 33

nginx 配置文件加个这个 访问的时候文件会变成下载,不会执行。其他的图片文档都可以正常访问。先避免 .php文件被执行的问题

location  ^~ /storage
    {
        alias /www/wwwroot/xxxxx/public/storage;
        try_files $uri $uri/ =404;
    }
3个月前 评论
mmx (楼主) 3个月前
jimmy 3个月前
mmx (楼主) 3个月前
OwenZhang 1周前

是不是木马导致的。我试过laravel的文件上传,是上传不了php文件的

3个月前 评论
mmx (楼主) 3个月前
ononl (作者) 3个月前

storage 目录把运行的权限去掉基本可以免掉大部分注入

3个月前 评论
mmx (楼主) 3个月前
浮心 3个月前
lovewei 3个月前
浮心 3个月前
deatil (作者) 3个月前
deatil (作者) 3个月前

用户上传文件直接进OSS,只有自己生成的文件才丢在storage下面,从根本上解决问题

3个月前 评论
mmx (楼主) 3个月前
GeorgeKing 3个月前

且不说执行权限的问题, .php 后缀的文件是怎么传上来的?

3个月前 评论
mmx (楼主) 3个月前
qufo 3个月前
mmx (楼主) 3个月前
mmx (楼主) 3个月前

做好代码规范,制定文档规则性的都按照文档执行

3个月前 评论

可以通过 mime 类型限制一下

https://www.php.net/manual/en/function.mime-content-type.php

$_FILES 里的属性,只有 tmp_name 能信任,type 和 name 都能伪造

3个月前 评论
sanders

我提三点:

  1. 按国内法律,所有 UGC 内容必须做审核,管理这样松,即便不是 PHP 文件,也容易出其他问题;
  2. 建议将写入 storage/public 目录的文件都转移到其他目录,用新的域名和服务器配置进行读取(避免调用 fastcgi);
  3. 如果有预算建议使用 OSS 配合 CDN 进行附件存储。
3个月前 评论
mmx (楼主) 3个月前

不是?storage的目录一般是存一些不公开的文件用的,然后通过接口下载的方式提供给外部用户,无法直接访问;要直接访问就存去public下,例如图片类

3个月前 评论
mmx (楼主) 3个月前

nginx 配置文件加个这个 访问的时候文件会变成下载,不会执行。其他的图片文档都可以正常访问。先避免 .php文件被执行的问题

location  ^~ /storage
    {
        alias /www/wwwroot/xxxxx/public/storage;
        try_files $uri $uri/ =404;
    }
3个月前 评论
mmx (楼主) 3个月前
jimmy 3个月前
mmx (楼主) 3个月前
OwenZhang 1周前

apache的话 有个modsecurity扩展 可以自己写个php脚本 检测一下上传文件有没有php标签就行了

3个月前 评论

禁止这个目录执行后缀是php|php5|jsp的文件访问

location ~ ^/(storage )/.*\.(php|php5|jsp)$ {
    deny all;
}
3个月前 评论
mmx (楼主) 3个月前

nginx 配置综合了一下

location  ^~ /storage
{
     if ($request_uri ~ ^/(storage)/.*?\.(php|php5|html)$) {
        return 403;
     }
    alias /home/wwwroot/*/public/storage;
    try_files $uri $uri/ =404;
}
3个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!