详解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 相关文章推荐
JavaScript原型继承之基础机制分析
Aug 26 Javascript
根据json字符串生成Html的一种方式
Jan 09 Javascript
用box固定长宽实现图片自动轮播js代码
Jun 09 Javascript
javascript中createElement的两种创建方式
May 14 Javascript
详解js树形控件—zTree使用总结
Dec 28 Javascript
JavaScript闭包_动力节点Java学院整理
Jun 27 Javascript
vue监听scroll的坑的解决方法
Sep 07 Javascript
React 无状态组件(Stateless Component) 与高阶组件
Aug 14 Javascript
小程序关于请求同步的总结
May 05 Javascript
微信小程序和百度的语音识别接口详解
May 06 Javascript
微信小程序 select 下拉框组件功能
Sep 09 Javascript
vue.js iview打包上线后字体图标不显示解决办法
Jan 20 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
php 正则表达式小结
2009/08/31 PHP
php学习笔记之 函数声明(二)
2011/06/09 PHP
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
2011/10/31 PHP
javascript some()函数用法详解
2014/11/13 PHP
解读PHP中上传文件的处理问题
2016/05/29 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
php实现数组纵向转横向并过滤重复值的方法分析
2017/05/29 PHP
php面向对象基础详解【星际争霸游戏案例】
2020/01/23 PHP
html读出文本文件内容
2007/01/22 Javascript
javascript简单性能问题及学习笔记
2014/02/04 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
jquery实现在光标位置插入内容的方法
2015/02/05 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
微信小程序 动画的简单实例
2017/10/12 Javascript
基于 flexible 的 Vue 组件:Toast -- 显示框效果
2017/12/26 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
2018/05/16 Javascript
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
详解vue-cli3 中跨域解决方案
2019/04/10 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
2020/04/14 Javascript
Python面向对象特殊成员
2017/04/24 Python
使用Python对Csv文件操作实例代码
2017/05/12 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
Python地图绘制实操详解
2019/03/04 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
使用css如何制作时间ICON方法实践
2012/11/12 HTML / CSS
法国娇韵诗官方旗舰店:Clarins是来自法国的天然护肤品牌
2018/06/30 全球购物
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
经贸日语专业个人求职信
2013/12/13 职场文书
白酒营销策划方案
2014/08/17 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
物业工程部岗位职责
2015/02/11 职场文书