PHP函数is_uploaded_file用法

PHP

#is_uploaded_file #函数2012-05-09 14:48

在一个项目中,接到用户反馈说其所有客户不能上传文件,都返回失败。经过排查发现是PHP中的is_uploaded_file函数在捣鬼。

细节分析:

在正常情况下,通过PHP上传文件,需要通过is_uploaded_file函数来判断文件是否是通过 HTTP POST 上传的,这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件,例如 /etc/passwd。

而本次遇到的问题是本来应该是C:\WINDOWS\Temp\yige.org.tmp这样的tmp_name,却变成了C:\\WINDOWS\\Temp\\yige.org.tmp这种,导致is_uploaded_file函数返回错误的信息。

处理方式:

在加上如下代码后,问题解决。

$file['tmp_name'] = str_replace(’\\\\’, ‘\\’, $file['tmp_name']);

注意,“\\\\”实际字符串就是两个\,其他两个是用来表示转义的。

深入研究:

为什么在默写特定的环境下会出现这种情况呢,我们来看如下分析:

; Magic quotes for incoming GET/POST/Cookie data.

magic_quotes_gpc = On

在PHP的默认配置中magic_quotes_gpc是On的,而打开了magic_quotes_gpc参数的PHP环境会自动对GET/POST/Cookie添加addslashes效果。注意,并不会为$_FILES添加addslashes效果。

而当magic_quotes_gpc是Off的时候,由于为$_FILES数组添加了addslashes作用,反而出现了问题。也就在magic_quotes_gpc是Off的PHP环境下都会出现此问题。

顺带说句,SVN上的MooPHP代码已经修复此问题。

is_uploaded_file函数解析:

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

bool is_uploaded_file ( string $filename )

如果 filename 所给出的文件是通过 HTTP POST 上传的则返回 TRUE。这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件,例如 /etc/passwd。 这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。

为了能使 is_uploaded_file() 函数正常工作,必段指定类似于 $_FILES['userfile']['tmp_name'] 的变量,而在从客户端上传的文件名 $_FILES['userfile']['name'] 不能正常运作。

相关文章

php @is_uploaded_file,PHP函数is_uploaded_file用法相关推荐

  1. 关于C语言中的malloc和free函数的用法

    一.malloc()和free()的基本概念以及基本用法: 1.函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针 ...

  2. Python assert断言函数及用法

    Python assert断言函数及用法 Python assert 语句,又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的值,如果值为真,则程序可以继续往下执行:反之,Pyt ...

  3. python中的counter()、elements()、most_common()和subtract()函数的用法

    python中的counter().elements().most_common()和subtract()函数的用法 counter()方法: class collections.Counter([i ...

  4. Java正则表达式--Matcher.group函数的用法

    https://www.cnblogs.com/jiafuwei/p/6080984.html Java正则表达式--Matcher.group函数的用法 原来,group是针对()来说的,group ...

  5. MapInfo中常用查询函数及用法

    MapInfo中常用查询函数及用法: 函数用途 语法 备注 图层中选点 Str$(obj)="point": Str(String)表示字符串:point表示点: 图层中选线 St ...

  6. Oracle trunc()函数的用法

    --Oracle trunc()函数的用法 /**************日期********************/ 1.select trunc(sysdate) from dual  --20 ...

  7. php error log 函数,php日志函数error_log如何使用 php日志函数error_log用法介绍

    php日志函数error_log如何使用?这篇文章主要介绍了php日志函数error_log用法,结合实例形式分析了php日志函数error_log相关的配置文件设置.函数功能.用法与使用注意事项,需 ...

  8. Python中的map()函数和reduce()函数的用法

    Python中的map()函数和reduce()函数的用法 这篇文章主要介绍了Python中的map()函数和reduce()函数的用法,代码基于Python2.x版本,需要的朋友可以参考下  

  9. php函数find的用法,c语言find函数的用法详解

    c语言find函数的用法详解 C语言之find()函数 find函数用于查找数组中的某一个指定元素的位置. 比如:有一个数组[0, 0, 5, 4, 4]: 问:元素5的在什么位置,find函数 返回 ...

最新文章

  1. navicat无法连接远程的数据库解决
  2. 2dx解析cocosbuilder中使用layer时的缺陷
  3. php+我的第一个程序,2. 第一个 C 程序
  4. js流程图:aworkflow.js
  5. 推荐一款最好的服务器备份软件
  6. linux ubuntu fadora,两大主流Linux版本Ubuntu 18.04和Fedora 28的对比
  7. 在linux oracle 10g/11g x64bit环境中,goldengate随os启动而自己主动启动的脚本
  8. birt报表与现有系统的集成
  9. Myeclipse学习总结(3)——Myeclipse中的代码格式化、注释模板及保存时自动格式化
  10. 【从线性回归到BP神经网络】第一部分:协方差与相关系数
  11. springboot+easyui+jpa实现动态权限角色的后台管理系统(二)
  12. 与大学生谈学习BIM软件开发所需要的准备
  13. 使用three建立一个正方体
  14. 安卓手机连接不上电脑解决方法总结
  15. 新浪微创投狩猎季:5家LP皆VC大佬 人气日渐高涨
  16. 中国石油大学计算机应用基础在线考试答案,中国石油大学2020年春季《计算机应用基础》在线考试答卷附标准答案...
  17. Word动态输出多表格方案(以工资条为例)
  18. CTF-PHP反序列化漏洞5-反序列化字符逃逸
  19. 自制三维激光扫描建模
  20. java氧气版,氧气呼吸器属于( )。

热门文章

  1. HTB-Pilgrimage
  2. 微信分享--图片显示问题
  3. 为pdf文件增加金山取词功能
  4. CSDN日报20170327——《如何平衡工作与生活?真相在此》
  5. 自学python书籍推荐,请多多列举?
  6. 罗斯蒙特499ACL-01-54和膜23501-10
  7. burpsuit 靶场(Server-side request forgery)
  8. ES6之 函数(五)
  9. poj1185炮兵阵地【状压dp】
  10. 医院信息中心如何提高满意度