详解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 相关文章推荐
Mootools 1.2教程 输入过滤第一部分(数字)
Sep 15 Javascript
js自定义事件及事件交互原理概述(一)
Feb 01 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
Jun 08 Javascript
JSON格式化输出
Nov 10 Javascript
jQuery操作cookie方法实例教程
Nov 25 Javascript
javaScript中Math()函数注意事项
Jun 18 Javascript
javascript+ajax实现产品页面加载信息
Jul 09 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
May 12 Javascript
Vue2.0 实现单选互斥的方法
Apr 13 Javascript
JS出现404错误原理及解决方案
Jul 01 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
Sep 02 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
Oct 28 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
咖啡知识大全
2021/03/03 新手入门
PHP IN_ARRAY 函数使用注意事项
2010/07/24 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
简单谈谈Javascript中类型的判断
2015/10/19 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
2017/05/15 jQuery
jQuery实现常见的隐藏与展示列表效果示例
2018/06/04 jQuery
VUE v-for循环中每个item节点动态绑定不同函数的实例
2018/09/26 Javascript
vue页面切换过渡transition效果
2018/10/08 Javascript
详解js常用分割取字符串的方法
2019/05/15 Javascript
如何基于JavaScript判断图片是否加载完成
2019/12/28 Javascript
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
[03:33]TI9战队采访 - Infamous
2019/08/20 DOTA
pycharm 使用心得(四)显示行号
2014/06/05 Python
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
丝芙兰巴西官方商城:SEPHORA巴西
2016/10/31 全球购物
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
美国在线宠物用品商店:Entirely Pets
2017/01/01 全球购物
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
行政助理求职自荐信
2013/10/26 职场文书
销售顾问工作计划书
2014/09/15 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
大学生学年个人总结
2015/02/15 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
小学生作文之《压岁钱的烦恼》
2019/09/27 职场文书