当前位置: 首页 > 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.jsqmd.com/news/1397913/

相关文章:

  • 基于AI Agent与Slack Bolt构建智能团队助手实战指南
  • 银行业AI落地实战:从政策解读到信用评分模型部署全流程
  • StreamArena:长时视频理解基准测试平台解析与应用指南
  • 老Mac升级工具从入门到实战:OpenCore Legacy Patcher完整教程,手把手让旧电脑跑上新系统
  • 2026年专业的圆度圆柱仪选购全指南 一文理清圆度圆柱仪哪个厂家好 - 起跑123
  • 2026成都黄金回收避坑手册,大盘价减三计价,变现认准无损验金商家 - 资讯快报员
  • CTF自学教程:从零构建网络安全实战能力
  • 0445-Bomb-实现进入下一关
  • IDEA图形化Git操作指南:Merge Request模式下的高效协作与冲突解决
  • 面向编程代理的开源视频编辑器:API化视频处理与自动化集成指南
  • 全局快捷键突然失灵?3步完成热键冲突检测,揪出偷走按键的进程
  • 下班后的《绝区零》,终于不用再“上班“了
  • AI基准测试内测指南:从环境准备到高效反馈的全流程实践
  • 游戏刚启动就闪退?MelonLoader启动失败从排查到修复的完整自救手册
  • C语言内存初始化:静态数组与malloc动态内存管理详解
  • 一条命令搞定 M3U8 视频下载:N_m3u8DL-RE 完整上手手册
  • 2026解析圆度圆柱仪哪个厂家好 精密测量设备选型全指南 - 起跑123
  • 覆铜板如何决定PCB高速信号完整性(SI)性能?
  • AI生成柯基图片的多模型协同工作流与优化技巧
  • 杜绝称重猫腻!广州合规黄金回收门店计量标准公示 - 资讯早知道
  • 人形机器人微表情解码系统(下)
  • 一站式 IDEA API 调试插件实战:Cool Request 快速上手指南
  • 蛋白质结构预测批量处理实战:用 ColabFold 一次搞定上百条序列
  • LLM工程实践:为何应追求结构化输出而非拟人化表达
  • 一次 SSH 连接排障全记录:为什么一根网线能折腾一下午
  • Windows 下 Touch Bar 只剩音量键?三步安装 DFRDisplayKm 驱动,解锁 MacBook Pro 的完整交互
  • Windows系统下通过Cygwin64编译安装LibRadtran辐射传输计算工具
  • Windows系统文件svsvc.dll丢失找不到问题解决
  • 高空线缆难辨识?输电线路航空标志球提前化解飞行器撞线风险
  • Unity引擎VR大场景开发与优化实战