详解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 相关文章推荐
获取DOM对象的几种扩展及简写
Oct 09 Javascript
event.keyCode键码值表 附只能输入特定的字符串代码
May 15 Javascript
JQuery勾选指定name的复选框集合并显示的方法
May 18 Javascript
JavaScript实现函数返回多个值的方法
Jun 09 Javascript
javascript 中设置window.location.href跳转无效问题解决办法
Feb 09 Javascript
利用JS对iframe父子(内外)页面进行操作的方法教程
Jun 15 Javascript
node.js中fs文件系统目录操作与文件信息操作
Feb 24 Javascript
React styled-components设置组件属性的方法
Aug 07 Javascript
vue+iview+less 实现换肤功能
Aug 17 Javascript
原生JS实现简单的倒计时功能示例
Aug 30 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
Sep 27 Javascript
javascript实现点击产生随机图形
Jan 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()函数及defined()函数使用详解
2013/06/09 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
使用CodeIgniter的类库做图片上传
2014/06/12 PHP
CI框架集成Smarty的方法分析
2016/05/17 PHP
jQuery实现图片放大预览实现原理及代码
2013/09/12 Javascript
js中substring和substr的定义和用法
2014/05/05 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
2015/12/25 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
Bootstrap3下拉菜单的实现
2017/02/22 Javascript
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
vue引入swiper插件的使用实例
2017/07/19 Javascript
js判断传入时间和当前时间大小实例(超简单)
2018/01/11 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
基于JS实现视频上传显示进度条
2020/05/12 Javascript
JavaScript实现音乐导航效果
2020/11/19 Javascript
[00:12]DAC2018 no[o]ne亮相SOLO赛 他是否如他的id一样无人可挡?
2018/04/06 DOTA
Python多进程同步简单实现代码
2016/04/27 Python
python中模块的__all__属性详解
2017/10/26 Python
python中字符串的操作方法大全
2018/06/03 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
2019/04/30 Python
python自动化实现登录获取图片验证码功能
2019/11/20 Python
python如何实现单链表的反转
2020/02/10 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
2020/03/31 Python
人力资源主管的岗位职责
2014/03/15 职场文书
协议书模板
2014/04/23 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
课前一分钟演讲稿
2014/08/26 职场文书
党的群众路线教育实践活动对照检查材料(个人)
2014/09/24 职场文书
公司庆典欢迎词
2015/01/26 职场文书
安全员岗位职责
2015/02/10 职场文书
python tkinter Entry控件的焦点移动操作
2021/05/22 Python
MySQL日期时间函数知识汇总
2022/03/17 MySQL