详解PHP中pathinfo()函数导致的安全问题


Posted in Javascript onJanuary 05, 2017

定义和用法

pathinfo() 函数以数组或字符串的形式返回关于文件路径的信息。

返回的数组元素如下:

  1. [dirname]:返回文件路径中的目录部分
  2. [basename]:返回文件路径中文件名的部分
  3. [extension]:返回文件路径中文件的类型的部分

语法

pathinfo(path,options)

参数

  1. path: 必需。规定要检查的路径。
  2. options 可选。规定要返回的数组元素。默认是 all。

可能的值:

  1. PATHINFO_DIRNAME - 只返回 dirname
  2. PATHINFO_BASENAME - 只返回 basename
  3. PATHINFO_EXTENSION - 只返回 extension

提示和注释

注释:如果不是请求所有的元素,则 pathinfo() 函数返回字符串。

php开启pathinfo 路由模式:pathinfo 模式 需要 php.ini 开启下面这个参数

cgi.fix_pathinfo=1

path_info模式:http://www.xxx.com/index.php/模块/方法

实例 1

<?php
print_r(pathinfo("/testweb/test.txt"));
?>

上面的代码将输出:

Array
(
[dirname] => /testweb
[basename] => test.txt
[extension] => txt
)

实例 2

<?php
var_dump(pathinfo("/testweb/test.txt",PATHINFO_DIRNAME));
var_dump(pathinfo("/testweb/test.txt",PATHINFO_BASENAME));
var_dump(pathinfo("/testweb/test.txt",PATHINFO_EXTENSION));
?>

上面的代码将输出:

string(8)"/testweb"
string(8)"test.txt"
string(3)"txt"

应用

目录不可控没有执行权限

详解PHP中pathinfo()函数导致的安全问题

pathinfo, 一种伪静态的用法,path_info 模式:http://www.xxx.com/index.php / 模块 / 方法:

详解PHP中pathinfo()函数导致的安全问题

sb.txt 被当成了模块,实际上请求的还是 6.php

详解PHP中pathinfo()函数导致的安全问题

一句话就执行了。

过 WAF 注入

本地安装 apache 安全狗

已知在开启 pathinfo 的情况下 (默认开启) 可以这样访问

详解PHP中pathinfo()函数导致的安全问题

常用注入语句被拦截

详解PHP中pathinfo()函数导致的安全问题

pathinfo 模式不拦截

详解PHP中pathinfo()函数导致的安全问题

总结

以上就是这篇文章的全部内容了,本文也算是抛砖引玉,更多用途请自测!希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
可以支持多中格式的JS键盘
May 02 Javascript
基于mootools 1.3框架下的图片滑动效果代码
Apr 22 Javascript
JavaScript获取flash对象与网上的有所不同
Apr 21 Javascript
js实现上传图片预览的方法
Feb 09 Javascript
在Python中使用glob模块查找文件路径的方法
Jun 17 Javascript
JS for...in 遍历语句用法实例分析
Aug 24 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
Aug 26 Javascript
Bootstrap选项卡学习笔记分享
Feb 13 Javascript
JavaScript实现简单的双色球(实例讲解)
Jul 31 Javascript
Es6 Generator函数详细解析
Feb 24 Javascript
Vue使用mixins实现压缩图片代码
Mar 14 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
Sep 30 Javascript
jQuery电话号码验证实例
Jan 05 #Javascript
纯原生js实现table表格的增删
Jan 05 #Javascript
微信小程序 tabs选项卡效果的实现
Jan 05 #Javascript
jQuery密码强度验证控件使用详解
Jan 05 #Javascript
jquery广告无缝轮播实例
Jan 05 #Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
Jan 05 #Javascript
javascript添加前置0(补零)的几种方法
Jan 05 #Javascript
You might like
CI(CodeIgniter)框架介绍
2014/06/09 PHP
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
PHP开发制作一个简单的活动日程表Calendar
2016/06/20 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
基于datagrid框架的查询
2013/04/08 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
js代码实现随机颜色的小方块
2015/07/30 Javascript
详解javascript遍历方式
2015/11/11 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
2016/04/18 Javascript
jquery显示隐藏元素的实现代码
2016/05/19 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
jQuery实现上传图片前预览效果功能
2017/08/03 jQuery
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
微信小程序设置滚动条过程详解
2019/07/25 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
python3简单实现微信爬虫
2015/04/09 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
2017/09/06 Python
Python3 操作符重载方法示例
2017/11/23 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
2018/01/20 Python
Django组件cookie与session的具体使用
2019/06/05 Python
Python通过Tesseract库实现文字识别
2020/03/05 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
2020/09/23 Python
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
给排水工程师岗位职责
2013/11/21 职场文书
期中考试后的反思
2014/02/08 职场文书
教学评估实施方案
2014/03/16 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
青年联谊会致辞
2015/07/31 职场文书
详解thinkphp的Auth类认证
2021/05/28 PHP
JavaScript实现队列结构过程
2021/12/06 Javascript
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript
PyTorch中的torch.cat简单介绍
2022/03/17 Python
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android