| 一套web应用程序,一般都会提供文件上传的功能,方便来访者上传一些文件。 下面是一个简单的文件上传表单 <form action="upload.php" method="post" enctype="multipart/form-data" name="form1"> <input type="file" name="file1" /><br /> <input type="submit" value="上传文件" /> <input type="hidden" name="MAX_FILE_SIZE" value="1024" /> form> 
 php的配置文件php.ini,其中选项upload_max_filesize指定允许上传的文件大小,默认是2M $_FILES数组变量 PHP使用变量$_FILES来上传文件,$_FILES是一个数组。如果上传test.txt,那么$_FILES数组的内容为: $FILES Array { [file] => Array { [name] => test.txt  [type] => text/plain  [tmp_name] => /tmp/php5D.tmp  [error] => 0  [size] => 536  } } 
 如果上传文件按钮的name属性值为file <input type="file" name="file" /> 
 那么使用$_FILES['file']['name']来获得客户端上传文件名称,不包含路径。使用$_FILES['file']['tmp_name']来获得服务端保存上传文件的临时文件路径 存放上传文件的文件夹 PHP不会直接将上传文件放到网站根目录中,而是保存为一个临时文件,名称就是$_FILES['file']['tmp_name']的值,开发者必须把这个临时文件复制到存放的网站文件夹中。 $_FILES['file']['tmp_name']的值是由PHP设置的,与文件原始名称不一样,开发者必须使用$_FILES['file']['name']来取得上传文件的原始名称。 上传文件时的错误信息 $_FILES['file']['error']变量用来保存上传文件时的错误信息,它的值如下: 
    
        
            | 错误信息 | 数值 | 说 明 |  
            | UPLOAD_ERR_OK | 0 | 没有错误 |  
            | UPLOAD_ERR_INI_SIZE | 1 | 上传文件的大小超过php.ini的设置 |  
            | UPLOAD_ERR_FROM_SIZE | 2 | 上传文件的大小超过HTML表单中MAX_FILE_SIZE的值 |  
            | UPLOAD_ERR_PARTIAL | 3 | 只上传部分的文件 |  
            | UPLOAD_ERR_NO_FILE | 4 | 没有文件上传 |  文件上传漏洞 如果提供给网站访问者上传图片的功能,那必须小心访问者上传的实际可能不是图片,而是可以指定的PHP程序。如果存放图片的目录是一个开放的文件夹,则入侵者就可以远程执行上传的PHP文件来进行攻击。 下面是一个简单的文件上传例子: php // 设置上传文件的目录 $uploaddir = "D:/www/images/"; // 检查file是否存在 if (isset($_FILES['file1'])) { // 要放在网站目录中的完整路径,包含文件名 $uploadfile = $uploaddir . $_FILES['file1']['name']; // 将服务器存放的路径,移动到真实文件名 move_uploaded_file($_FILES['file1']['tmp_name'], $uploadfile); } ?> …… <form method="post" enctype="multipart/form-data" name="form1"> <input type="file" name="file1" /><br /> <input type="submit" value="上传文件" /> <input type="hidden" name="MAX_FILE_SIZE" value="1024" /> form> 
 这个例子没有检验文件后缀,可以上传任意文件,很明显的上传漏洞 本文出自:亿恩科技【www.enkj.com】
 php // 设置上传文件的目录 $uploaddir = "D:/www/images/"; // 检查file是否存在 if (isset($_FILES['file1'])) { // 要放在网站目录中的完整路径,包含文件名 $uploadfile = $uploaddir . $_FILES['file1']['name']; // 将服务器存放的路径,移动到真实文件名 move_uploaded_file($_FILES['file1']['tmp_name'], $uploadfile); } ?> …… <form method="post" enctype="multipart/form-data" name="form1"> <input type="file" name="file1" /><br /> <input type="submit" value="上传文件" /> <input type="hidden" name="MAX_FILE_SIZE" value="1024" /> form>
 这个例子没有检验文件后缀,可以上传任意文件,很明显的上传漏洞 本文出自:亿恩科技【www.enkj.com】
 -->
 
		服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM] |