Web安全与防护 (微课版) 课件 06-1 项目六 任务一 构造简单的文件上传_第1页
Web安全与防护 (微课版) 课件 06-1 项目六 任务一 构造简单的文件上传_第2页
Web安全与防护 (微课版) 课件 06-1 项目六 任务一 构造简单的文件上传_第3页
Web安全与防护 (微课版) 课件 06-1 项目六 任务一 构造简单的文件上传_第4页
Web安全与防护 (微课版) 课件 06-1 项目六 任务一 构造简单的文件上传_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目六

安全的文件上传Web安全与防护本任务要点学习目标什么是文件上传实现简单的文件上传文件上传的原理理解文件上传的基本概念和用途。掌握文件上传的基本实现步骤。了解防护文件上传的安全风险任务一

什么是文件上传目录CONTENTS01/什么是文件上传02/简单的文件上传03/文件上传的类型04/文件上传的数据存储05/文件上传的三阶段什么是文件上传01图片上传文档上传音频上传视频上传其他类型文件上传是指将本地的文件通过网络传输到服务器或其他设备的过程。通俗的说就是将你的电脑或手机上的文件,比如图片、文档、音乐等,通过网络发送给服务器或其他设备,这样就可以在其他地方访问或下载这些文件。举个例子,如果你想把你的照片分享给朋友,你可以用微信或QQ等软件上传照片,然后发送给对方,对方就可以看到你的照片了。文件上传有不同的类型,主要取决于你上传的文件是什么格式和大小。简单的文件上传02demonstration/study_upload01.php在实现文件上传的第一步是创建文件上传页,该页面允许用户上传不同类型的文件。创建上传页面:首先创建一个页面,允许用户上传文件。判断请求方法:使用if语句检查请求方法是否为POST。获取文件信息:文件名:获取上传的文件名,存入$fileName。临时路径:获取临时文件路径,存入$fileTmpName。文件大小和类型:分别存入$fileSize和$filetype设置上传目录:指定文件保存的目录为“uploads/”,赋值给$targetDir。构造完整路径:将目录和文件名结合,形成$targetFilePath。移动文件:使用move_uploaded_file将文件移至目标路径成功:输出“文件上传成功”。失败:输出“上传文件失败”。简单的文件上传02代码的第二部分是一个HTML表单,用于让用户选择要上传的文件,并提交到服务器。属性说明action指定表单提交的目标页面,这里是uploader.php,即本页面。method指定表单提交的方法,这里是POST。enctype指定表单数据的编码类型,这里是multipart/form-data,必须设置为这个值才能上传文件。inputtype=“file”用于让用户选择要上传的文件,name属性指定了文件数据的键名,这里是fileToUpload。inputtype=“submit”用于让用户提交表单,val

ue属性指定了按钮上显示的文字,这里是“上传文件”。由此就构成了一个简单的文件上传,然而这段代码的文件上传漏洞是没有对上传文件的类型和内容进行任何验证,这可能导致恶意用户上传可执行的代码文件,例如PHP、ASP或JSP等,然后通过访问这些文件来执行任意的命令或代码,从而对服务器造成破坏或泄露敏感信息。文件上传的类型03文件上传是前端不能直接操作本地文件,必须要用户来触发,一般有以下3种触发方式(1)通过文件选择按钮选择本地文件(2)通过拖拽的方式把文件拖进来(3)在编辑框里复制粘贴文件上传的数据存储04

文件上传数据的存储是指请求端和接收端如何交换和保存文件数据的过程。一般来说,请求端提供了一个表单,用户可以选择要上传的文件,然后提交请求。请求端会将文件数据和其他表单信息编码并上传至接收端,接收端将上传的内容进行解码,提取出HTML表单中的信息,将文件数据存入指定的位置。文件上传的三阶段051)前端准备阶段:前端准备阶段是指在请求端中,用户选择要上传的文件,然后进行格式化和预处理。在这个阶段中,前端需要获取用户选择的文件,通常可以通过input标签和type属性设置为File来实现。用户选择文件后,前端需要将文件转换为Blob或者File对象,File对象会包含文件的一些元信息,比如文件名、大小、类型等。在上传之前,前端可能还需要对文件进行压缩、加密、格式转换等操作,以便于上传。最后,前端需要将文件数据封装成multipart/form-data的类型,并发送HTTP请求到接收端。文件上传的三阶段052)请求发送阶段:请求发送阶段是指前端将文件数据封装成HTTP请求,然后发送给后端的过程。在这个阶段中,前端需要按照multipart/form-data规范将文件数据封装成请求体,并设置相应的请求头信息,如Content-Type、Content-Disposition等。其中,Content-Type用于指定请求体的类型为multipart/form-data,boundary用于分割请求体的不同部分;Content-Disposition用于指定每个部分的类型,名称和文件名等元信息。在发送请求时,前端可以使用XMLHttpRequest对象或FetchAPI来发送HTTP请求。文件上传的三阶段05

3)后端处理阶段:后端处理阶段是指接收端接收到请求后,对请求进行解析和处理的过程。在这个阶段中,接收端需要按照multipart/form-data规范解析请求体,并解析每个部分的元数据和数据。对于文件上传,后端需要将上传的文件保存到服务器上,通常可以使用Node.js的fs模块或第三方库如multer等来实现。在文件上传过程中,后端需要进行文件大小、类型、格式等的校验,以避免上传非法文件或造成服务器负担过重的情况。最后,后端需要返回相应的响应结果给前端,以告知上传是否成功。课堂实践一、任务名称:文件上传功能实现二、任务内容:使用PHP代码编写一个简单的文件上传功能,尝试对各种类型的文件进行上传,分析文件上传功能的原理三、工具需求:PHP开发环境四、任务要求:完成实践练习后,由老师检查完成情况。课堂思考一、什么是文件上传?二、文件上传中,为什么需要进行格式转换或预处理?三、思考一个简单的文件上传的PHP代码的工作原理。四、文件上传的三阶段分别是什么?每个阶段主要完成哪些任务?课

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论