兄弟们!昨天被叔叔上门问话啦 !你们是如何做的文件上传校验呢?
做的网站在storage目录下多了个index.php 文件,可以通过我们的域名访问到非法网站。
大家在文件上传功能中是怎么校验的呢?
有什么包可以实现非法文件的校验么?
高认可度评论:
nginx 配置文件加个这个 访问的时候文件会变成下载,不会执行。其他的图片文档都可以正常访问。先避免 .php文件被执行的问题
是不是木马导致的。我试过laravel的文件上传,是上传不了php文件的
storage 目录把运行的权限去掉基本可以免掉大部分注入
用户上传文件直接进OSS,只有自己生成的文件才丢在storage下面,从根本上解决问题
且不说执行权限的问题, .php 后缀的文件是怎么传上来的?
做好代码规范,制定文档规则性的都按照文档执行
可以通过 mime 类型限制一下
https://www.php.net/manual/en/function.mime-content-type.php
$_FILES 里的属性,只有 tmp_name 能信任,type 和 name 都能伪造
我提三点:
storage/public
目录的文件都转移到其他目录,用新的域名和服务器配置进行读取(避免调用 fastcgi);不是?storage的目录一般是存一些不公开的文件用的,然后通过接口下载的方式提供给外部用户,无法直接访问;要直接访问就存去public下,例如图片类
nginx 配置文件加个这个 访问的时候文件会变成下载,不会执行。其他的图片文档都可以正常访问。先避免 .php文件被执行的问题
apache的话 有个modsecurity扩展 可以自己写个php脚本 检测一下上传文件有没有php标签就行了
禁止这个目录执行后缀是php|php5|jsp的文件访问
nginx 配置综合了一下