is_uploaded_file函数引发的不能上传文件问题

更新时间:2013年10月29日 16:20:11   作者:

不能上传文件,都返回失败。经过排查发现是PHP中的is_uploaded_file函数在捣鬼,下面是具体的处理方法,有类似情况的朋友可以参考下

起因:

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

细节分析:

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

而本次遇到的问题是本来应该是C:/WINDOWS/Temp/php99.tmp这样的tmp_name,却变成了C://WINDOWS //Temp//php99.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'] 不能正常运作。

相关文章

之前有一个案例用到判断用户是手机访问还是电脑访问,然后给用户展示相应的页面。最初是用js去做,但是准确度不高,最终采用了PHP来做,经测试基本上都能判断准确。2015-06-06

之前一直使用第三方的邮件系统发送邮件,比如QQ啊、gmail啊等,但是有时候客户不希望给我们提供发件人邮箱和密码,后来我才发现使用PHP自带的mail函数完全可以实现这一需求了2014-01-01

一直搞.net ,最近研究PHP,也涉及到防注入的安全措施,和.net的大同小异,从网上摘回一篇,作为备注,以供自己需要时查阅。2010-04-04

这篇文章主要介绍了PHP实现的DES加密解密类定义与用法,结合实例形式分析了基于php定义的DES加密解密类与具体使用方法,需要的朋友可以参考下2018-07-07

set_include_path 设置默认包含路径,本文将介绍下其的使用方法,及注意事项,感兴趣的朋友可以了解下,或许对你学习php有所帮助2013-02-02

本文总结了一些自己在项目中进行php优化的时候的注意事项,都是自己经常用到的,这里推荐给大家,有遗漏的地方也请告之。2014-11-11

PHP+MYSQL做网站开发通常都会碰到浏览器输出中文字符时乱码,这个问题的原因主要是因为HTML内容编码,PHP文件编码和MySQL数据库编码这三者不一致造成的。今天我们来具体探讨下出现中文乱码后的解决方案。2015-03-03

这篇文章主要介绍了PHP实现递归无限级分类的方法,具有一定的参考价值,需要的朋友可以参考下2015-10-10

这篇文章主要介绍了php实现子字符串位置相互对调互换的方法,可实现简单字符串中两个子字符串互换的功能,涉及php字符串运算与插入、替换等操作的相关技巧,需要的朋友可以参考下2016-06-06

这篇文章主要介绍了PHP中实现Bloom Filter算法,本文直接给出实现代码,代码中给出详细注释,Bloom Filter算法介绍等内容,需要的朋友可以参考下2015-03-03

最新评论

php is uploaded file,is_uploaded_file函数引发的不能上传文件问题相关推荐

  1. python request file upload_Python基于requests实现模拟上传文件

    方法1: 1.安装requests_toolbelt依赖库#代码实现 def upload(self): login_token = self.token.loadTokenList() for to ...

  2. is_uploaded_file函数引发的问题

    起因 : 在利用MooPHP的一个项目中,接到用户反馈说其所有客户不能上传文件,都返回失败.经过排查发现是PHP中的is_uploaded_file函数在 捣鬼. 细节分析 : 在正常情况下,通过PH ...

  3. 手机如何看python文件大小_如何安全地检查上传文件的大小?(How to check size of uploaded file safely in bottlepy?)...

    如何安全地检查上传文件的大小?(How to check size of uploaded file safely in bottlepy?) 我真的害怕read()操作,因为它使用内存. 例如,任何 ...

  4. 组态nodejs的后台server.js,新增post接口,接受前端input file模式上传文件,并接收保存到服务器

    如何解决node.js中fs.rename文件跨域问题_OnlyLove_KD的博客-CSDN博客前言   最近在学习node.js,今天在写一个文件上传的功能,调用fs.rename上传文件时程序报 ...

  5. WebView 上传文件 WebChromeClient之openFileChooser函数

    原链接:http://blog.saymagic.cn/2015/11/08/webview-upload.html?utm_source=tuicool&utm_medium=referra ...

  6. 实现php a标签文件,HTML_如何点击a标签实现弹出input file上传文件对话框,html 复制代码代码如下: SPAN - phpStudy...

    如何点击a标签实现弹出input file上传文件对话框 html 复制代码代码如下: <div> <a href="###">添加图片a> < ...

  7. php files上传错误,php-PHP上传文件的问题$_FILES['file']['error']

    这段时间一直在啃<Head First PHP & MySQL>,这本书非常好,一步步教授怎么开发一个 PHP网站,一直照着一步步地敲代码,现在看到487页,在测试上传文件功能时, ...

  8. Spring Boot 上传文件(spring boot upload file)

    本篇文章将说明在Spring Boot web程序中如何上传文件. 开发环境: 1. eclipse Oxygen Release (4.7.0) 2. Spring Boot 1.4.3 RELEA ...

  9. html中只能上传文件word,HTML文件表单,接受Word文档(HTML file form, accept Word documents)...

    HTML文件表单,接受Word文档(HTML file form, accept Word documents) 我在这里遇到了一个奇怪的问题. (不管怎样,或者我只是忽略了一些非常简单的东西.) 我 ...

最新文章

  1. 反射式红外光电管 ITR8307
  2. ElasticSearch-.net平台下c#操作ElasticSearch详解
  3. linux如何生成tar文件内容,linux如何使用tar命令创建Tar.Gz压缩文件
  4. python的6种基本数据类型--集合
  5. 优先队列priority_queue 用法详解
  6. ASP.NET Core 单元测试:如何 Mock HttpContext.Features.Get()
  7. icinga2 php模块,在Ubuntu 18.04系统上安装Icinga2监视工具的方法
  8. Git工作笔记001---Windows下安装Git Core以及TortoiseGit安装与配置
  9. HDU - 1272小希的迷宫
  10. Fortinet 修复严重漏洞,可导致未认证黑客以最高权限执行任意代码
  11. Java之数据库基础理论
  12. 黑苹果无线网卡的另一种解决方案
  13. 华为HG8245C光猫破解用户连接数限制
  14. 飞天云动港交所上市:市值39亿港元 成港股元宇宙第一股
  15. HBuilderX 插件下载失败 解决
  16. 计算机税率函数,2018最新按5000元个税Excel计算公式,帮你整理齐了!
  17. 【转帖】 嵌入式路线狂人计划--------个人认为。
  18. 【2022研电赛】安谋科技企业命题一等奖:基于EAIDK-610的中国象棋机器人对弈系统
  19. matlab中switch函数用法
  20. 业务代码如何才能不再写出大串的if/else?

热门文章

  1. JS实现点击button按钮切换图片
  2. 将 CAD 平面布置图转换为 Visio 2002 空间规划图
  3. 解决IBM E49插电源+电池无法开机,只插电池可以开机的问题
  4. 手机厂商做安全,手机安全软件要另谋他路了?
  5. 小白也能懂的可转债策略合集V1.0
  6. Java新手小白入门篇 Java基础(一)
  7. 华为mate30连接电脑linux,对飚iPad Pro的华为MatePad此新功能或许你没想到
  8. Win8先体验(6)——全新系统还原/一键恢复出厂设置[M3]
  9. oracle字符串排序
  10. Linux网卡配置虚拟IP地址