详解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 相关文章推荐
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
Feb 03 Javascript
JavaScript获取/更改文本框的值的实例代码
Aug 02 Javascript
javaScript知识点总结(必看篇)
Jun 10 Javascript
JavaScript reduce和reduceRight详解
Oct 24 Javascript
jQuery表单验证之密码确认
May 22 jQuery
使用mint-ui开发项目的一些心得(分享)
Sep 07 Javascript
vue的全局提示框组件实例代码
Feb 26 Javascript
利用Electron简单撸一个Markdown编辑器的方法
Jun 10 Javascript
JavaScript中callee和caller的区别与用法实例分析
Jun 28 Javascript
JavaScript获取当前url路径过程解析
Dec 27 Javascript
基于JavaScript实现简单扫雷游戏
Jan 02 Javascript
JavaScript 对象创建的3种方法
Nov 17 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学习资料汇总与网址
2007/03/16 PHP
php使用ICQ网关发送手机短信
2013/10/30 PHP
php数据库备份还原类分享
2014/03/20 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
ie 调试javascript的工具
2009/04/29 Javascript
JQuery CSS样式控制 学习笔记
2009/07/23 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
JQuery实现的图文自动轮播效果插件
2015/06/19 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
String字符串截取的四种方式总结
2016/11/28 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
python迭代器实例简析
2014/09/25 Python
Flask入门教程实例:搭建一个静态博客
2015/03/27 Python
使用PDB模式调试Python程序介绍
2015/04/05 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
python微信跳一跳游戏辅助代码解析
2018/01/29 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
2020/04/20 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
纯CSS3实现滚动的齿轮动画效果
2014/06/05 HTML / CSS
建筑人员岗位职责
2013/12/25 职场文书
员工培训心得体会
2013/12/30 职场文书
酒吧创业计划书
2014/01/18 职场文书
社会学专业学生职业规划书
2014/02/07 职场文书
运动会跳远加油稿
2014/02/20 职场文书
《陋室铭》教学反思
2014/02/26 职场文书
青年文明号创建承诺
2014/03/31 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
自愿离婚协议书范本
2015/01/26 职场文书
华清池导游词
2015/02/02 职场文书
Python中的min及返回最小值索引的操作
2021/05/10 Python
Python pandas之求和运算和非空值个数统计
2021/08/07 Python