我有一个将文件上传到我的服务器的脚本这是我的代码
当用户将文件上传到服务器时
我的脚本重命名文件并将详细信息保存在数据库中。
我将文件放在网络根目录之外。
那么我的方法安全吗?
是的,您的方法是安全的。因为所有文件都将在 Web 根目录之外上传。没有人可以通过 URL 直接访问它。
您应该对您的文件进行进一步的输入验证,例如:
检查文件大小
使用“文件类型识别器”检查文件类型
检查内容标题
您还可以在此处查看文件上传的最佳实践: https ://www.owasp.org/index.php/Unrestricted_File_Upload
永远不要在您的服务器上运行该文件。
要检查内容类型(顺便说一句,我自己从来没有这样做过),您可以尝试以下操作:
$file = "path2file";
$finfo = new finfo(FILEINFO_MIME);
$type = $finfo->file($file);
if(in_array($type,array("application/zip", "application/x-zip", .. whatever content types are ok...)))
//you passed