🗣 Wd提问: php 文件上传 禁止上传 jsp
🤖 Ai回答: 在 PHP 中实现文件上传时,为了防止用户上传恶意的 `.jsp` 文件(或其他危险文件类型),你需要在服务器端进行严格的文件类型检查和过滤。以下是一个完整的示例,展示如何禁止上传 `.jsp` 文件。
✅ 1、基本文件上传代码(包含安全检查)
php
<?php
// 设置上传目录
$uploadDir = 'uploads/';
if (!is_dir($uploadDir)) {
mkdir($uploadDir, 0755, true);
}
// 检查是否提交了文件
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['file'])) {
$file = $_FILES['file'];
// 获取文件名和扩展名
$filename = basename($file['name']);
$ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
// 定义不允许的文件扩展名
$forbiddenExtensions = ['jsp', 'jspx', 'jspx', 'jhtm', 'jhtml', 'php', 'php3', 'php4', 'php5', 'phtml', 'py', 'pl', 'exe'];
// 检查扩展名是否被禁止
if (in_array($ext, $forbiddenExtensions)) {
die(错误:不允许上传此类文件类型(如 .jsp、.php 等)!);
}
// 可选:检查 MIME 类型(增强安全性)
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimeType = finfo_file($finfo, $file['tmp_name']);
finfo_close($finfo);
// 如果是 JSP 类型,拒绝上传
if (strpos($mimeType, 'java') !== false strpos($mimeType, 'application/x-java-archive') !== false) {
die(错误:检测到 Java Web 文件,不允许上传!);
}
// 防止目录遍历攻击
$safeFilename = preg_replace('/[^a-zA-Z0-9._-]/', '_', $filename);
// 移动文件
$targetPath = $uploadDir 、$safeFilename;
if (move_uploaded_file($file['tmp_name'], $targetPath)) {
echo 文件上传成功!<br;
echo 文件路径: 、htmlspecialchars($targetPath);
} else {
echo 上传失败,请重试。;
}
}
?
<!DOCTYPE html
<html
<head
<title文件上传</title
</head
<body
<form method=post enctype=multipart/form-data
<input type=file name=file required
<button type=submit上传</button
</form
</body
</html
✅ 2、额外的安全建议
🔹 限制文件大小
php
if ($file['size'] 5 * 1024 * 1024) { // 5MB
die(文件过大,最大支持 5MB);
}
🔹 使用随机文件名(防篡改)
php
$uniqueName = uniqid() 、'_' 、$ext;
$targetPath = $uploadDir 、$uniqueName;
🔹 禁用服务器执行上传文件(重要)
确保你的 Web 服务器(如 Apache/Nginx)不会执行上传的 `.jsp` 文件:
Apache: 在 `uploads/` 目录下创建 `.htaccess` 文件:
apache
<FilesMatch \.(jsp|jspx|jspf|jsw|jsv|jspfc|class|jar)$
Order allow,deny
Deny from all
</FilesMatch
Nginx: 在配置中添加:
nginx
location ~* \.(jsp|jspx|class|jar)$ {
deny all;
}
✅ 总结:防止上传 JSP 文件的关键点
| 措施 | 说明 |
| ✅ 检查文件扩展名 | 禁止 `.jsp`, `.jspx` 等 |
| ✅ 检查 MIME 类型 | 用 `finfo` 判断真实类型 |
| ✅ 使用白名单 | 只允许安全的文件类型(如 png, jpg, pdf) |
| ✅ 防止目录遍历 | 清理文件名中的特殊字符 |
| ✅ 服务器配置 | 确保 Web 服务器不执行上传文件 |
通过以上措施,可以有效防止用户上传 `.jsp` 或其他可执行脚本文件,从而提升网站安全性。
📣 商家广告:





0
IP地址: 228.249.49.7
搜索次数: 0
提问时间: 2025-11-08 11:40:03
🛒 域名购买:
5.hi.cn
rdqq.cn
r-t.com.cn
q-j.cn
yb.gs
mj.gs
g-y.cn
523.net.cn
z.gz.cn
vj.gs
❓️ 热门提问:
3g无线视频服务器
switch手柄唤醒主机
定位系统哪个最好
配电房托管
ddr3服务器内存
有主机的电脑
高防bgp服务器
服务器出租美国
vps服务器故障恢复方案
户外304户外机柜
豌豆Ai站群搜索引擎系统
🌐 域名评估:
musk.poker
sea.zj.cn
goqc.cn
si.hb.cn
aaaa.tj.cn
ssr.gs
tt.gd.cn
uavtower.net.cn
d.pw
vtol.bj.cn
⛏ 最新挖掘:
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜
🖌 热门作画:
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊:
🔗 友情链接:
谷哥seo
站群平台
ai提问
🧰 站长工具:
Ai工具 whois查询 搜索
📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。