当前位置: 首页 > news >正文

别被坑了!PHP文件上传下载源码,安全漏洞一抓一个准

PHP 文件上传

通过 PHP,可以把文件上传到服务器。

本章节实例在 test 项目下完成,目录结构为:

test |-----upload # 文件上传的目录 |-----form.html # 表单文件 |-----upload_file.php # php 上传代码

源码下载创建一个文件上传表单

允许用户从表单上传文件是非常有用的。

请看下面这个供上传文件的 HTML 表单:

菜鸟教程(runoob.com)

文件名:

将以上代码保存到 form.html 文件中。

有关上面的 HTML 表单的一些注意项列举如下:

作出说明, 让用户实施上传文件这一行为, 无疑是存在着极大安全隐患的风险。所以, 务必要仅仅准许那些可信度得到确认的用户来执行文件上传此项操作才行。

创建上传脚本

".php" 文件含有供上传文件的代码:

0) { echo "错误:" . $_FILES["file"]["error"] . " "; } else { echo "上传文件名: " . $_FILES["file"]["name"] . " "; echo "文件类型: " . $_FILES["file"]["type"] . " "; echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB "; echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"]; } ?>

在运用 PHP 的全局数组 $ 时, 能够将文件从客户计算机传至远程服务器, 实现文件上传操作。

最先呈现的参数乃是表单之中, input的name, 紧接着的下标能够是"name"、"type"、"size"、""亦或者是"error"。呈现情况如同下面这样:

这关乎一种特别简单的文件上扬方式, 依循安全层面的思索, 您理应扩充谈及允许哪些用户做出文件上扬行为的制约。

上传限制

在这个脚本里, 针对文件上传, 将其限制进行了增添。用户能够上传的文件类型, 仅仅是.gif、.jpeg、.jpg、.png这几种, 并且文件所在的大小, 必然是要小于200 kB的。

0) { echo "错误:: " . $_FILES["file"]["error"] . " "; } else { echo "上传文件名: " . $_FILES["file"]["name"] . " "; echo "文件类型: " . $_FILES["file"]["type"] . " "; echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB "; echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"]; } } else { echo "非法的文件格式"; } ?>

保存被上传的文件

在上边的实例里, 于那被称之为服务器的对象存在着的PHP临时文件夹之中, 创建了一个体现为被上传文件的临时副本的事物。

彼时, 这个临时生成的副本文件将会于脚本终结之际不见踪影。若要留存那被上传的文件, 我们得把它复制到别的地方去:

0) { echo "错误:: " . $_FILES["file"]["error"] . " "; } else { echo "上传文件名: " . $_FILES["file"]["name"] . " "; echo "文件类型: " . $_FILES["file"]["type"] . " "; echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB "; echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . " "; // 判断当前目录下的 upload 目录是否存在该文件 // 如果没有 upload 目录,你需要创建它,upload 目录权限为 777 if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " 文件已经存在。 "; } else { // 如果 upload 目录不存在该文件则将文件上传到 upload 目录下 move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "文件存储在: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "非法的文件格式"; } ?>

上面的脚本对文件存在与否进行了检测, 假如该文件并不存在, 于是便将此文件进行拷贝, 拷贝至名为“”的那个目录之下。

http://www.cnnetsun.cn/news/4038843.html

相关文章:

  • reCAPTCHA技术解析:从“我不是机器人”到行为分析安全体系
  • YOLO 涨点改进|全网独家复现多尺度微小元器件特征融合 16 类控制柜指示灯压板识别、变电站二次设备智能巡检全场景有效涨点
  • 4步救活被系统淘汰的老iPhone:Legacy-iOS-Kit降级越狱实操指南
  • 一文读懂MonkeyOCRv2核心基础知识
  • 【AI智能体速通】08.用护栏降低AI 智能体安全风险
  • # 一个JSP打天下:47KB万能表单引擎
  • MCP-uplift:无缝桥接新旧MCP协议,平滑迁移AI工具生态
  • 汽车行业客户体验管理系统推荐:基于AI大模型的VOC智能归因与改善工单自动分类实践
  • 微信聊天记录如何免费完整导出?WeChatExporter 开源备份工具全攻略
  • TVA具身智能技术图谱(1):系统安全防护与对抗鲁棒性
  • 《代码随想录》刷题打卡day31:动态规划-背包问题part02
  • 老电脑装不上 Windows 11?这份绕过 TPM 的完整方案请收好
  • Linux线程调度策略与优先级设置实战指南
  • 被 300MB 的 Shapefile 折磨一整天后,我靠 Mapshaper 十分钟交付了秒开的 Web 地图
  • 域内信息搜集实战:从零构建内网渗透侦察地图
  • 网盘下载速度慢到怀疑人生?这款免费油猴脚本让下载速度快10倍
  • MySQL数据库增删改查入门:从基础语法到实战应用
  • SMUDebugTool完全指南:AMD Ryzen系统调试入门的7个实战技巧
  • 抖音批量下载与直播回放保存保姆级指南:douyin-downloader 从入门到顺手
  • CNKI-download:5分钟上手知网文献批量下载的全能助手
  • CAD 优化:跳过 AcConnectWebServices.arx 加载
  • HoRain云--NumPy 从数值范围创建数组
  • 200SMART项目迁移G2全攻略:从V2.8到V3.1,模块与变量规则详解
  • MEMS技术深度解析:从物理原理到工程实践的全链路指南
  • Wacom数位板驱动安装失败全攻略:从根源排查到彻底解决
  • Jellyfin Android TV 完全实战手册:从第一次开机到搭建私人影院的进阶全攻略
  • BetterJoy实战终极指南:免费把Switch手柄变成PC游戏万能适配神器
  • 从收藏夹空转到本地整库:抖音视频批量下载的开源方案实测记录
  • 告别“蜗牛下载“:网盘直链下载助手帮你解锁八大网盘的真实下载链接
  • 从上下文管理到Runtime操作系统:构建高效LLM应用的新范式