豌豆Ai站群搜索引擎系统 V.25.10.25 网址:www.wd.chat

🗣 Wd提问: php 文件上传 禁止上传 tar

🤖 Ai回答:
在 PHP 中,为了防止用户上传 `.tar` 文件(或其他危险文件类型),你可以通过以下方式来限制文件上传:

✅ 方法一:检查文件扩展名(推荐)

在上传前检查文件的扩展名,禁止 `.tar` 等危险格式。

php
<?php
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
$fileName = $_FILES['file']['name'];
$fileTmpName = $_FILES['file']['tmp_name'];
$fileSize = $_FILES['file']['size'];
$fileType = $_FILES['file']['type'];

// 获取文件扩展名(小写)
$fileExtension = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));

// 定义允许的文件扩展名(例如图片、PDF等)
$allowedExtensions = ['jpg', 'jpeg', 'png', 'gif', 'pdf', 'doc', 'docx', 'txt'];

// 检查是否为不允许的扩展名(如 tar)
if (in_array($fileExtension, ['tar', 'gz', 'bz2', 'zip'])) {
die('不允许上传压缩包或 tar 文件!');
}

// 只允许特定扩展名
if (!in_array($fileExtension, $allowedExtensions)) {
die('文件类型不被允许!');
}

// 验证文件大小(可选)
if ($fileSize 5 * 1024 * 1024) { // 5MB
die('文件太大!');
}

// 移动文件到目标目录
$uploadDir = 'uploads/';
if (!is_dir($uploadDir)) {
mkdir($uploadDir, 0777, true);
}

$newFileName = uniqid() 、'.' 、$fileExtension;
$destination = $uploadDir 、$newFileName;

if (move_uploaded_file($fileTmpName, $destination)) {
echo 文件上传成功!;
} else {
echo 上传失败!;
}
}
?

✅ 方法二:使用 `finfo` 检查 MIME 类型(更安全)

有些用户可能修改文件扩展名欺骗系统,因此建议结合 MIME 类型判断。

php
<?php
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimeType = finfo_file($finfo, $_FILES['file']['tmp_name']);

// 判断是否是 tar 或其他压缩包
if (strpos($mimeType, 'application/x-tar') !== false
strpos($mimeType, 'application/gzip') !== false
strpos($mimeType, 'application/x-bzip2') !== false
strpos($mimeType, 'application/zip') !== false) {
die('不允许上传压缩包!');
}

finfo_close($finfo);
?

⚠️ 注意:`finfo` 更可靠,但需要开启 PHP 的 `fileinfo` 扩展。

✅ 方法三:禁用 PHP 的 `allow_url_fopen` 和 `allow_url_include`(服务器层面)

虽然不是直接控制上传,但可以增强安全性:

ini
; 在 php.ini 中设置
allow_url_fopen = Off
allow_url_include = Off

✅ 方法四:前端和后端双重验证

前端使用 JavaScript 提前过滤文件类型。
后端必须再次验证(不能完全信任前端)。

html
<input type=file accept=.jpg,.jpeg,.png,.pdf name=file

✅ 最佳实践总结

| 措施 | 是否必要 |

| 检查文件扩展名 | ✅ 必须 |
| 检查 MIME 类型 | ✅ 强烈推荐 |
| 检查文件大小 | ✅ 推荐 |
| 使用随机文件名 | ✅ 推荐(避免路径遍历) |
| 限制上传目录权限 | ✅ 推荐(不可执行) |
| 不要解析上传文件为脚本 | ✅ 必须 |

🛑 示例:禁止上传 `.tar` 的完整逻辑

php
$disallowedTypes = ['application/x-tar', 'application/gzip', 'application/x-bzip2', 'application/zip'];
$disallowedExtensions = ['tar', 'gz', 'bz2', 'zip'];

// 检查扩展名
$extension = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION));
if (in_array($extension, $disallowedExtensions)) {
die('不允许上传压缩文件!');
}

// 检查 MIME 类型
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimeType = finfo_file($finfo, $_FILES['file']['tmp_name']);
finfo_close($finfo);

if (in_array($mimeType, $disallowedTypes)) {
die('文件类型不安全,禁止上传!');
}

✅ 这样就能有效阻止 `.tar` 等压缩包上传,提高系统安全性。

Ai作答

📣 商家广告


广告招商

店名

公司

算命

算命


0

IP地址: 248.227.135.250

搜索次数: 0

提问时间: 2025-11-08 11:44:18

🛒 域名购买
32.cx
n-f.cn
zhong.red
822.net.cn
nefronet.com
797.net.cn
sbnjt.com
9el.cn
926.net.cn
ndgj.cn

❓️ 热门提问
php工程师如何做技术预研
局域网dns服务部署
新世界香港云服务器
vps客服
网盘搜索引擎哪个好
机房中心建设
美国服务器kaivps
VPS服务器迁移要点
vps racknerd promotion
vps哪个便宜
豌豆Ai站群搜索引擎系统

🌐 域名评估
Left.ltd
v.qh.cn
32.cx
zx.cx
yu7.sx.cn
deepseek.uno
ypettoy.ltd
axeb.cn
ygyyy.com
allonedu.com

⛏ 最新挖掘
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜

🖌 热门作画

🤝 关于我们:
豌豆Ai 域名 建站 站群 留痕 推广 评估 源码
开发Ai 工具 日记 价格 加盟 广告 流量 留言 联系

🗨 加入群聊
群

🔗 友情链接
台湾网站搜尋  广州花都月饼厂  ai提问

🧰 站长工具
Ai工具  whois查询  搜索

📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。

👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。

上一篇 79714 79715 79716 下一篇