php上传文件接口
第一种:使用html自带的file控件,然后后台通过php提交到服务器
第二种:使用php自带的ftp函数上传到服务器~
B. PHP 大文件上传,支持断点续传,求具体方案、源码或者文件上传插件
HTTP协议里, 对断点下载有支持.
断点上传单纯靠PHP 是做不了的.
因为普通的浏览器端没那功能.(上传的时候 还是会整个文件编码发送)
想实现的话 , 客户端需要插件了,
客户端可以使用flex实现. 服务端, PHP可以写个webservice 接受文件.
C. php中上传文件的方法有多少种
一、传统的php写的上传类。
写一个php的上传类,这个方法用到的知识全部是php的,而且技术的难点也不多。
<form method="post" action="upload.php" enctype="multipart/form-data">
<table border=0 cellspacing=0 cellpadding=0 align=center width="100%">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">//隐藏域。这里name必须设置成MAX_FILE_SIZE,其值就是上传文件的最大长度,单位是B,这里我限制成2M
<input name="file" type="file" value="浏览" >
< input type="submit" value="上传" name="B1">
</table>
</form>
服务端利用php的$_FILES['file']['name']来获取文件后缀名,具体的代码自己查找资料看看,这里就不多说了。
总结;这个方法可以用来上传小于2M的文件或者是图片,基本的功能可以实现。
二、利用uploadify插件
这个是利用jQuery的上传插件,上传可以带进度条,容易配置。
总结:可以上传一些大文件,和图片,而且带进度条,可以多文件上传,在WEB中会经常用。
三、利用网络的webupload
WebUploader 是由 Bai FEX 团队开发的一款以 HTML5 为主,FLASH 为辅的现代文件上传组件。在现代的浏览器里面能充分发挥 HTML5 的优势,同时又不摒弃主流IE浏览器,沿用原来的 FLASH 运行时,兼容 IE6+,iOS 6+, Android 4+。采用大文件分片并发上传,极大的提高了文件上传效率。
四、swfupload的插件
这是一个jquery的上传插件,功能也非常强大,开发也比较容易,网上有很多的资料,可以自行查找。
D. 用php做这种上传文件页面并且在页面中能显示已经上传的文件该怎么做
1 上传文件的前端页面
<form enctype="multipart/form-data" action="服务器地址" method="post">
<input type="file" name="file"/>
</form>
2 PHP端用$_FILES取出前端上次的文件,用move_uploaded_file把上传的文件从临时目录移动到你服务器的文件目录下
3 用scandir扫描你的文件目录,用is_file过滤文件,你页面上的文件大小,可以通过filesize获取,上传时间就是创建时间用filemtime
4 发起删除用unlink删除 发起下载就读取文件然后修改header返回即可
E. 文件上传漏洞的类型有哪些
1、 前端检测绕过
有的站点只在前端对文件的类型有所限制,我们只需用bp抓包然后修改文件后缀名就能绕过这种检测。
2、 文件头检测绕过
有的站点使用文件头来检测文件的类型,这种检测可以在shell前加入相应的字节一绕过检测,几种常见的文件类型的头字节如下:
3、 后缀检测绕过
部分服务器仅根据文件后缀、上传时的信息或者文件头来判断文件类型,此时可以绕过。php由于历史的原因,部分解释器可能支持符合正则/ph(p[2-7]?|t(ml)?)/的后缀,如php/php5/pht/phtml/shtml/pwml/phtm等。如果后端对文件名进行了过滤,可以尝试双写文件名,比如1.pphphp。
4、 系统命名绕过
在windows系统中,上传不符合windwos命名规则的文件名会被windows系统自动去掉不符合规则符号后面的内容,例如:test.asp.、test.asp(空格)、test.php:1.jpg、test.php:: D A T A 、 t e s t . p h p : : DATA、test.php:: DATA、test.php::DATA…这些文件上传到服务器端之后都会变成test.php
在linux系统下,可以尝试上传文件后缀名为大小写混用的Php文件。
5、 文件包含绕过
在文件包含的时候,为了灵活包含文件,将被包含文件设置为变量,通过动态变量来引入需要包含的文件,用户可以对变量的值进行控制,而服务器端未对变量进行合理的校验,这样就导致所包含的文件有可能存在恶意代码。比如1.php
<?php $file=$_GET[‘file’]; include($file); ?>
这个程序就包含了一个文件,我们在1.txt文件中写入
<?php phpinfo(); ?>
然后将这个文件包含在1.php中1.php?file=1.txt这样
<?php phpinfo(); ?>就成功写入1.php这个文件当中,我们访问1.php这个文件的时候就能出现php信息那个页面。利用这个漏洞我们就可以进行文件上传,我们只需包含一个一句话木马内容的txt就能用菜刀连接,这样就成功执行了文件上传。
6、 解析漏洞绕过
目录解析:在网站中建立名称为*.asp、.asa格式的文件夹时,其文件夹下面的文件都会被当做asp执行。
文件解析:当文件名为.asp;1.jpg时,也会被当做asp执行
Apache解析漏洞:Apache在解析文件时,是从右往左,如果遇到不认识的扩展名时,就会继续向左判断,例如1.php.rar就会被当做
php解析。
IIS 7.0/IIS 7.5/Nginx<0.8.3畸形文件解析漏洞,当访问http://xxx.com/1.jpg/1.php时,此时1.php不存在,就会将1.jpg当做php文件去执行,所以如果存在该漏洞,将php木马后缀改成jpg然后访问1.jpg/1.php然后1.jpg就会被当成1.php来执行。
.htaccess,该文件里面的代码如下:
<FilesMatch “1”>
SetHandler application/x-httpd-php
这段代码的意思就是文件名包含”1”这个这个字符串就会被当成php文件来处理。但是值得注意的是上传.htaccess必须是网站根路径。
7、 文件截断绕过
00截断:由于00代表结束符,所以会把00后面的所有字符删除。
能利用这个漏洞的前提是,php版本要小于5.3.4,magic_quotes_gpc需要为OFF状态。我们用bp进行拦包之后,需要send to repeater,然后在hex中,在php后面添加00
8、 竞争条件攻击
一些网站上传文件逻辑上是允许上传任意文件的,然后检查上传文件的内容是否包含webshell脚本,如果包含则删除该文件,这里存在的问题是文件上传成功之后和删除文件之间存在一个短的时间差,攻击者就可以利用这个时间差来上传漏洞攻击。攻击者先上传一个webshell脚本1.php内容如下:
<?php fputs(fopen(‘../shell.php’,’w’),’<?php @eval($_POST[a]) ?>’); ?>
代码内容就是生成一个新的webshell,shell.php,那么当1.php上传成功之后,我们快速访问这个文件,这时就会在服务器端当前目录下自动生成shell.php,这时就利用时间差完成了webshell的上传。
F. 用PHP写上传资源的代码是上传大文件,例如300M的文件,再不改php.ini设置的情况下,有没有一种用代码修改
可以,利用php里面的函数ini_set(),ini_set参数格式为ini_set($var,$value),$var是你要设置的配置选项,$value是你要修改的值。
G. PHP使用inputfile实现文件上传
在使用三丰云的免费云服务器进行系统测试时,PHP环境和代码是常用工具。今天分享的是如何利用PHP的inputfile实现文件上传。
HTML中,通过将input框的type属性设置为file,即可将其转变为文件上传组件。实现上传功能需要配合使用form表单和submit按钮。
在PHP中,文件上传通过脚本接收,服务器创建目标文件存储上传的文件。
在开发中,处理文件上传还需要考虑安全性,包括文件类型、大小等问题。不进行限制可能导致安全隐患。文件类型可以通过检查上传文件的MIME类型或扩展名来限制。在PHP中,in_array()函数可用来检查文件类型是否在规定范围内。
文件大小限制同样重要,以防止过大文件上传。使用$_FILES["file"]["size"]可以获取上传文件的大小。
总结而言,使用input file实现文件上传功能是Web开发中常见的任务。在PHP中,通过$_FILE变量接收上传文件信息,并利用move_uploaded_file函数将文件存储到指定目录。此外,通过in_array和$_FILES["file"]["size"]等方法,确保文件类型和大小符合安全标准,以提高上传文件的安全性。