is_uploaded_file 这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件

转载 2016年08月30日 22:50:37



is_uploaded_file

(PHP 3>= 3.0.17, PHP 4 >= 4.0.3)

is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的

说明

bool is_uploaded_file ( string filename)

如果 filename 所给出的文件是通过 HTTP POST 上传的则返回 TRUE。这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件,例如/etc/passwd

这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。

is_uploaded_file() 仅可用于 PHP 3 的 3.0.16 版之后,以及 PHP 4 的 4.0.2 版之后。如果你执意要用老版本,可以用下面的函数来保护自己:

注: 以下例子不能用于 PHP 4 的 4.0.2 版之后。它依赖的 PHP 内部函数在该版本之后改变了。

<?php
/* Userland test for uploaded file. */
function is_uploaded_file($filename) {
    if (!
$tmp_file get_cfg_var('upload_tmp_dir')) {
        
$tmp_file dirname(tempnam(''''));
    }
    
$tmp_file .= '/' basename($filename);
    
/* User might have trailing slash in php.ini... */
    
return (ereg_replace('/+''/'$tmp_file) == $filename);
}

/* This is how to use it, since you also don't have
* move_uploaded_file() in these older versions: */
if (is_uploaded_file($HTTP_POST_FILES['userfile'])) {
    
copy($HTTP_POST_FILES['userfile'], "/place/to/put/uploaded/file");
} else {
    echo 
"Possible file upload attack: filename '$HTTP_POST_FILES[userfile]'.";
}
?>

参见 move_uploaded_file(),以及文件上传处理一章中的简单使用例子。


is_uploaded_file

(PHP 3>= 3.0.17, PHP 4 >= 4.0.3)

is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的

说明

bool is_uploaded_file ( string filename)

如果 filename 所给出的文件是通过 HTTP POST 上传的则返回 TRUE。这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件,例如/etc/passwd

这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。

is_uploaded_file() 仅可用于 PHP 3 的 3.0.16 版之后,以及 PHP 4 的 4.0.2 版之后。如果你执意要用老版本,可以用下面的函数来保护自己:

注: 以下例子不能用于 PHP 4 的 4.0.2 版之后。它依赖的 PHP 内部函数在该版本之后改变了。

<?php
/* Userland test for uploaded file. */
function is_uploaded_file($filename) {
    if (!
$tmp_file get_cfg_var('upload_tmp_dir')) {
        
$tmp_file dirname(tempnam(''''));
    }
    
$tmp_file .= '/' basename($filename);
    
/* User might have trailing slash in php.ini... */
    
return (ereg_replace('/+''/'$tmp_file) == $filename);
}

/* This is how to use it, since you also don't have
* move_uploaded_file() in these older versions: */
if (is_uploaded_file($HTTP_POST_FILES['userfile'])) {
    
copy($HTTP_POST_FILES['userfile'], "/place/to/put/uploaded/file");
} else {
    echo 
"Possible file upload attack: filename '$HTTP_POST_FILES[userfile]'.";
}
?>

参见 move_uploaded_file(),以及文件上传处理一章中的简单使用例子。

is_uploaded_file函数引发的问题

起因 : 在一个项目中,接到用户反馈说其所有客户不能上传文件,都返回失败。经过排查发现是PHP中的is_uploaded_file函数在 捣鬼。 细节分析 : 在正常情况下,通过PHP 上传...
  • ebw123
  • ebw123
  • 2013年09月05日 23:37
  • 735

is_uploaded_file()

一,表单       1,上传文件的表单使用post方式(和get的区别不用说了);还要加上enctype='multipart/form-data'。       2,一般要加上隐藏域:,位置在f...

PHP开发学习——文件上传(move_uploaded_file)

功能:把上传的临时文件移动到upload目录下面,upload是在根目录下已经创建好的!!! [php] view plain copy "" enct...

PHP开发学习——文件上传(move_uploaded_file)

功能:把上传的临时文件移动到upload目录下面,upload是在根目录下已经创建好的!!! 上传文件: ...

解决PHP move_uploaded_file函数移动图片失败

出现的问题描述:今天在实现一个在用户注册时上传头像图片文件的PHP脚本时,出现了问题:PHP脚本在前面已经确定 浏览器端上传文件没有错误。 上传的文件是合法的。 上传的文件是图像文件。 已经在服务器端...
  • yums467
  • yums467
  • 2015年10月04日 11:40
  • 1333

【PHP学习】move_uploaded_file的使用

定义和用法 move_uploaded_file() 函数将上传的文件移动到新位置。 若成功,则返回 true,否则返回 false。 语法 move_uploaded_file(file,new...

PhpStorm上解决move_uploaded_file函数open失败的问题 图文教程

PhpStorm上解决move_uploaded_file函数open失败的问题 图文教程php的代码

S2SH整合过程中 文件上传后不能删除temp文件的问题(Resource Leaking: Could not remove uploaded file )

帮朋友做一个文件上传的小功能开始 Action中是这样处理的 public class EditPhotoAction extends BaseHttpAwareAction{ private...

linux svn服务器安装 本版本不支持 浏览器访问 貌似只有本地能用

一 下载工具 **下载地址 自己搜哦,挺难搜的。下载好了再回来看 [plain] view plaincopyprint? 1. su...

XXX is not in the sudoers file 解决方案:赋予linux普通用户挂载光驱的权限

默认普通用户不能挂载光驱,提示只有root可以     [root@localhost~]# su - htc     [htc@localhost ~]$ mount  /dev/cdrom  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:is_uploaded_file 这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件
举报原因:
原因补充:

(最多只允许输入30个字)