详解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切换功能的简单方法
Nov 23 Javascript
基于jQuery的前端数据通用验证库
Aug 08 Javascript
js控制表单奇偶行样式的简单方法
Jul 31 Javascript
javascript删除数组元素并且数组长度减小的简单实例
Feb 14 Javascript
浅谈Javascript中的Function与Object
Jan 26 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
Apr 26 Javascript
Vue2.x中的Render函数详解
May 30 Javascript
Angular2进阶之如何避免Dom误区
Apr 02 Javascript
react-router 路由切换动画的实现示例
Dec 03 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
Jun 24 Javascript
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
Apr 03 Javascript
关于React Native 无法链接模拟器的问题
Jun 21 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
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
2019/05/13 PHP
动感效果的TAB选项卡jquery 插件
2011/07/09 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
jQuery级联操作绑定事件实例
2014/09/02 Javascript
javascript面向对象快速入门实例
2015/01/13 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
JS之相等操作符详解
2016/09/13 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
js分页之前端代码实现和请求处理
2017/08/04 Javascript
浅谈Vue.js路由管理器 Vue Router
2018/08/16 Javascript
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
JS实现获取当前所在周的周六、周日示例分析
2019/05/11 Javascript
vue轻量级框架无法获取到vue对象解决方法
2019/05/12 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
2019/05/22 Javascript
Angular6使用forRoot() 注册单一实例服务问题
2019/08/27 Javascript
vue实现图片上传预览功能
2019/12/23 Javascript
python实现电脑自动关机
2018/06/20 Python
CSS3中Transform动画属性用法详解
2016/07/04 HTML / CSS
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
韩国著名的在线综合购物网站:Akmall
2016/08/07 全球购物
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
技校生自我鉴定范文
2013/09/26 职场文书
医学专业毕业生推荐信
2013/11/14 职场文书
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
幼儿园母亲节活动总结
2015/02/10 职场文书
新年祝酒词大全
2015/08/11 职场文书
Python标准库pathlib操作目录和文件
2021/11/20 Python
python实现简单的三子棋游戏
2022/04/28 Python