详解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 操作文件 实现方法小结
Jul 02 Javascript
jsTree树控件(基于jQuery, 超强悍)[推荐]
Sep 01 Javascript
node.js中的fs.statSync方法使用说明
Dec 16 Javascript
JavaScript如何获取数组最大值和最小值
Nov 18 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
May 10 Javascript
深入理解Javascript中的自执行匿名函数
Jun 03 Javascript
jquery延迟对象解析
Oct 26 Javascript
JavaScript原生数组Array常用方法
Apr 06 Javascript
基于IView中on-change属性的使用详解
Mar 15 Javascript
Vue 动态设置路由参数的案例分析
Apr 24 Javascript
小程序获取周围IBeacon设备的方法
Oct 31 Javascript
小程序登录之支付宝授权的实现示例
Dec 13 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用正则表达式匹配中文实例详解
2013/11/06 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
javascript中普通函数的使用介绍
2013/12/19 Javascript
从数组中随机取x条不重复数据的JS代码
2013/12/24 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
JavaScript运动减速效果实例分析
2015/08/04 Javascript
正则表达式优化JSON字符串的技巧
2015/12/24 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
2016/05/26 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
vuejs2.0实现一个简单的分页示例
2017/02/22 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
简单谈谈vue的过渡动画(推荐)
2017/10/11 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
JS闭包经典实例详解
2018/12/20 Javascript
VUE脚手架具体使用方法
2019/05/20 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
2019/11/29 Javascript
9种方法优化jQuery代码详解
2020/02/04 jQuery
python技能之数据导出excel的实例代码
2017/08/11 Python
tensorflow中tf.slice和tf.gather切片函数的使用
2020/01/19 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
css3一款3D字体带阴影效果的实现步骤
2013/03/20 HTML / CSS
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
开业典礼致辞
2015/07/29 职场文书
PHP实现两种排课方式
2021/06/26 PHP
教你win10系统中APPCRASH事件问题解决方法
2022/07/15 数码科技