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

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

🤖 Ai回答:
在 PHP 中,为了安全起见,禁止用户上传 `.html` 文件(或其他可能被恶意利用的文件类型)是一个常见的需求。你可以通过以下几种方式来实现:

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

在上传文件前,检查文件扩展名是否为 `.html` 或 `.htm`,如果是则拒绝上传。

php
<?php
$allowedExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp']; // 允许的图片格式
$disallowedExtensions = ['html', 'htm']; // 禁止上传的扩展名

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_FILES['file'])) {
$file = $_FILES['file'];
$fileExtension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));

// 检查是否为禁止的扩展名
if (in_array($fileExtension, $disallowedExtensions)) {
die(错误:不允许上传 HTML 文件。);
}

// 检查是否为允许的扩展名
if (!in_array($fileExtension, $allowedExtensions)) {
die(错误:文件类型不被允许。);
}

// 检查文件大小(例如:限制为 5MB)
if ($file['size'] 5 * 1024 * 1024) {
die(错误:文件大小超过限制。);
}

// 检查是否为合法上传文件
if ($file['error'] !== UPLOAD_ERR_OK) {
die(错误:文件上传失败。);
}

// 生成安全的文件名(防止路径遍历、重名等)
$newFileName = uniqid() 、'.' 、$fileExtension;
$uploadDir = 'uploads/';
$uploadPath = $uploadDir 、$newFileName;

// 创建目录(如果不存在)
if (!is_dir($uploadDir)) {
mkdir($uploadDir, 0755, true);
}

// 尝试移动文件
if (move_uploaded_file($file['tmp_name'], $uploadPath)) {
echo 文件上传成功!;
} else {
echo 文件上传失败。;
}
}
}
?

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

虽然 MIME 类型可以被伪造,但结合扩展名检查可以提高安全性。

php
<?php
$allowedMimeTypes = [
'image/jpeg',
'image/png',
'image/gif',
'image/bmp',
'image/webp'
];

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_FILES['file'])) {
$file = $_FILES['file'];
$fileExtension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
$mimeType = mime_content_type($file['tmp_name']);

// 检查扩展名是否为禁止类型
if (in_array($fileExtension, ['html', 'htm'])) {
die(错误:不允许上传 HTML 文件。);
}

// 检查 MIME 类型是否在允许列表中
if (!in_array($mimeType, $allowedMimeTypes)) {
die(错误:文件类型不被允许。);
}

// 文件大小限制
if ($file['size'] 5 * 1024 * 1024) {
die(错误:文件大小超过限制。);
}

// 移动文件
$uploadDir = 'uploads/';
$newFileName = uniqid() 、'.' 、$fileExtension;
$uploadPath = $uploadDir 、$newFileName;

if (!is_dir($uploadDir)) {
mkdir($uploadDir, 0755, true);
}

if (move_uploaded_file($file['tmp_name'], $uploadPath)) {
echo 文件上传成功!;
} else {
echo 文件上传失败。;
}
}
}
?

✅ 方法三:使用白名单机制(最安全)

只允许特定文件类型上传,禁止其他所有类型。

php
<?php
$allowedExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg'];

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_FILES['file'])) {
$file = $_FILES['file'];
$fileExtension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));

// 检查扩展名是否在白名单中
if (!in_array($fileExtension, $allowedExtensions)) {
die(错误:文件类型不被允许。);
}

// 检查文件大小
if ($file['size'] 5 * 1024 * 1024) {
die(错误:文件大小超过限制。);
}

// 检查是否为合法上传
if ($file['error'] !== UPLOAD_ERR_OK) {
die(错误:文件上传失败。);
}

// 生成安全文件名
$uploadDir = 'uploads/';
$newFileName = uniqid() 、'.' 、$fileExtension;
$uploadPath = $uploadDir 、$newFileName;

if (!is_dir($uploadDir)) {
mkdir($uploadDir, 0755, true);
}

if (move_uploaded_file($file['tmp_name'], $uploadPath)) {
echo 文件上传成功!;
} else {
echo 文件上传失败。;
}
}
}
?

⚠️ 安全建议

1、不要只依赖扩展名:攻击者可以上传 `.html.php` 文件绕过检查。
2、使用白名单机制:只允许你信任的文件类型。
3、重命名文件:上传后使用 `uniqid()` 或随机名,避免路径遍历。
4、限制上传目录权限:上传目录应设置为不可执行脚本(如 `php` 文件不能执行)。
5、检查文件内容:对于图片,可以使用 `getimagesize()` 检查是否为真实图片。
6、禁用 `allow_url_fopen` 和 `allow_url_include`:防止远程文件包含。
7、上传文件夹不在 Web 根目录:防止直接访问上传文件。

✅ 示例:检查图片文件真实性

php
if ($file['error'] === UPLOAD_ERR_OK) {
$imageInfo = getimagesize($file['tmp_name']);
if (!$imageInfo) {
die(错误:不是有效的图片文件。);
}
}

✅ 总结

| 方法 | 安全性 | 说明 |
|
| 扩展名检查 | 中等 | 简单但容易被绕过 |
| MIME 类型检查 | 中等 | 可伪造,建议结合扩展名 |
| 白名单机制 | 高 | 推荐方式 |
| 内容检查 | 高 | 最安全,但性能略低 |

✅ 推荐做法:使用白名单 + 扩展名 + 文件内容检查(如图片) + 安全文件名 + 上传目录权限控制。

这样可以有效防止 `.html` 文件上传,避免 XSS 或恶意脚本注入风险。

Ai作答

📣 商家广告


广告招商

八字

星座

算命

广告招商


0

IP地址: 144.143.32.240

搜索次数: 0

提问时间: 2025-11-10 08:37:15

🛒 域名购买
9.bj.cn
jamctr.com
app.hl.cn
815.net.cn
oa5.cn
61.chat
z-j.net
08.gold
23.gold
c-a.com.cn

❓️ 热门提问
云计算公司是干什么的
net.ck域名
域名注
挂机类型的游戏
游戏挂机云服务器推荐
定位信息
杭州电商托管
云主机的配置不包括
ftp网站建设
怎么购买好的域名
豌豆Ai站群搜索引擎系统

🌐 域名评估
f.xz.cn
uavtower.org.cn
lll.college
vivo.tw.cn
evtolfair.com
pp.mo.cn
vtol.jx.cn
musk.city
igo.pw
xg.gs

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

🖌 热门作画

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

🗨 加入群聊
群

🔗 友情链接
广东月饼公司  手机常用软件  ai提问

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

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

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

上一篇 84459 84460 84461 下一篇