详解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 相关文章推荐
jquery中通过过滤器获取表单元素的实现代码
Jul 05 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
Jul 12 Javascript
jQuery操作input值的各种方法总结
Nov 21 Javascript
javascript获取元素CSS样式代码示例
Nov 28 Javascript
Google 地图类型详解及示例代码
Aug 06 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
Nov 13 Javascript
jQuery读取本地的json文件(实例讲解)
Oct 31 jQuery
浅谈微信JS-SDK 微信分享接口开发(介绍版)
Aug 15 Javascript
jQuery实现参数自定义的文字跑马灯效果
Aug 15 jQuery
vue项目移动端实现ip输入框问题
Mar 19 Javascript
layui对工具条进行选择性的显示方法
Sep 19 Javascript
vue实现移动端H5数字键盘组件使用详解
Aug 25 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 define函数的使用说明
2008/08/27 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
2019/03/28 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
JavaScript 三种创建对象的方法
2009/10/16 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
javascript 数组操作详解
2015/01/29 Javascript
AngularJs中route的使用方法和配置
2016/02/04 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
Node.js插件安装图文教程
2016/05/06 Javascript
Node.js的npm包管理器基础使用教程
2016/05/26 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
微信小程序与后台PHP交互的方法实例分析
2018/12/10 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
2019/09/19 Javascript
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
python实现将汉字保存成文本的方法
2018/11/16 Python
python使用knn实现特征向量分类
2018/12/26 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
pytorch实现线性拟合方式
2020/01/15 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
Django如何批量创建Model
2020/09/01 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
草莓网官网:StrawberryNET
2019/08/21 全球购物
C/C++程序员常见面试题一
2012/12/08 面试题
2015年综治宣传月活动总结
2015/03/25 职场文书
2015秋季开学典礼主持词
2015/07/16 职场文书