🗣 Wd提问: php 文件上传 禁止上传 aspx
🤖 Ai回答: 在 PHP 中处理文件上传时,为了安全起见,通常需要限制用户上传的文件类型。如果你希望禁止上传 `.aspx` 文件(以及其他潜在危险的脚本文件),可以采取以下几种措施:
✅ 推荐做法:结合多种验证方式
1、检查文件扩展名
php
$allowed_extensions = ['jpg', 'jpeg', 'png', 'gif', 'pdf']; // 只允许这些扩展名
$disallowed_extensions = ['aspx', 'php', 'phtml', 'php3', 'php4', 'php5', 'pl', 'py', 'jsp', 'asp', 'exe', 'sh'];
$filename = $_FILES['upload']['name'];
$ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
// 方法一:只允许白名单中的扩展名(推荐)
if (!in_array($ext, $allowed_extensions)) {
die('不允许的文件类型');
}
// 或者方法二:黑名单检查(不推荐单独使用,但可作为补充)
if (in_array($ext, $disallowed_extensions)) {
die('禁止上传 .aspx 等脚本文件');
}
⚠️ 注意:仅靠扩展名检查是不够的,因为攻击者可以伪造扩展名。
2、检查 MIME 类型(Content-Type)
php
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimeType = finfo_file($finfo, $_FILES['upload']['tmp_name']);
finfo_close($finfo);
$allowedMimeTypes = ['image/jpeg', 'image/png', 'image/gif', 'application/pdf'];
if (!in_ array($mimeType, $allowedMimeTypes)) {
die('无效的文件类型');
}
✅ `finfo_file()` 比 `$_FILES['upload']['type']` 更可靠,因为后者可被客户端伪造。
3、将上传目录设置为不可执行
在 Web 服务器(如 Apache/Nginx)中,确保上传目录不能执行脚本。
Apache 示例(.htaccess):
apache
<FilesMatch \.(php|aspx|pl|py|jsp|asp|sh|cgi)$
Require all denied
</FilesMatch
Nginx 示例:
nginx
location ~* ^/uploads/.*\.(php|aspx|pl|py|jsp|asp|sh|cgi)$ {
deny all;
}
4、重命名上传文件(避免原始文件名)
php
$newFilename = uniqid() 、'.' 、$ext;
move_uploaded_file($_FILES['upload']['tmp_name'], uploads/ 、$newFilename);
这样即使上传了恶意文件,也无法通过原始名称直接访问。
🛡️ 完整示例代码
php
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['upload'])) {
$file = $_FILES['upload'];
// 检查错误
if ($file['error'] !== UPLOAD_ERR_OK) {
die('上传出错');
}
$filename = $file['name'];
$ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
// 白名单:只允许图片和 PDF
$allowed_exts = ['jpg', 'jpeg', 'png', 'gif', 'pdf'];
if (!in_array($ext, $allowed_exts)) {
die('禁止上传 .aspx 等脚本文件');
}
// 检查 MIME 类型
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $file['tmp_name']);
finfo_close($finfo);
$allowed_mimes = ['image/jpeg', 'image/png', 'image/gif', 'application/pdf'];
if (!in_array($mime, $allowed_mimes)) {
die('文件类型不合法');
}
// 生成安全文件名
$safe_name = uniqid() 、'.' 、$ext;
$upload_dir = 'uploads/';
if (!is_dir($upload_dir)) mkdir($upload_dir, 0755, true);
if (move_uploaded_file($file['tmp_name'], $upload_dir 、$safe_name)) {
echo 上传成功!;
} else {
echo 上传失败;
}
}
?
<form method=post enctype=multipart/form-data
<input type=file name=upload
<button type=submit上传</button
</form
🔒 总结
不要依赖黑名单(如只禁止 `.aspx`),应使用白名单机制。
永远不要信任用户输入,包括文件名、扩展名和 MIME 类型。
上传目录必须禁止脚本执行(服务器配置层面)。
重命名文件,避免路径遍历或直接执行。
这样可以有效防止 `.aspx`、`.php` 等恶意脚本上传和执行。
📣 商家广告:





0
IP地址: 210.33.44.123
搜索次数: 0
提问时间: 2025-11-10 09:02:23
🛒 域名购买:
g-a.com.cn
f.cq.cn
rdqq.cn
kr.gs
0.bj.cn
nf.gs
y-u.com.cn
sjtp.cn
736.net.cn
7mt.net
❓️ 热门提问:
网址dns污染
开发一个电商平台大概需要多少钱
justgvps
电商网站建设团队
外贸搜索引擎排名
最佳资源搜索引擎
vps 游戏服务器
searx搜索引擎
视频会议主机价格
站群系统搭建系统搭建程序开发
豌豆Ai站群搜索引擎系统
🌐 域名评估:
tojf.cn
tt.nx.cn
su8.biz
g-y.cn
trump.sd.cn
si.sx.cn
rbnt.cn
su8.black
oo.jx.cn
uepy.cn
⛏ 最新挖掘:
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜
🖌 热门作画:
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊:
🔗 友情链接:
租香港vps
谷歌左侧排名
ai提问
🧰 站长工具:
Ai工具 whois查询 搜索
📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。