详解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 相关文章推荐
JSDoc 介绍使用规范JsDoc的使用介绍
Feb 12 Javascript
js字符串的各种格式的转换 ToString,Format
Aug 08 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
Sep 29 Javascript
jquery解析JSON数据示例代码
Mar 17 Javascript
javascript修改IMG标签的src问题
Mar 28 Javascript
DOM 高级编程
May 06 Javascript
AngularJS 入门教程之HTML DOM实例详解
Jul 28 Javascript
jquery 实现回车登录详解及实例代码
Oct 23 Javascript
浅析Angular2子模块以及异步加载
Apr 24 Javascript
如何选择适合你的JavaScript框架
Nov 20 Javascript
JavaScript事件发布/订阅模式原理与用法分析
Aug 21 Javascript
Vue 后台管理类项目兼容IE9+的方法示例
Feb 20 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把小数转成整数3种方法
2014/06/30 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
2014/09/23 PHP
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
一个挺有意思的Javascript小问题说明
2011/09/26 Javascript
JavaScript 盒模型 尺寸深入理解
2012/12/31 Javascript
Jquery动态改变图片IMG的src地址示例
2013/06/25 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
jQuery添加和删除指定标签的方法
2015/12/16 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
2017/03/08 Javascript
微信小程序在其他页面监听globalData中值的变化
2019/07/15 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
2021/01/25 Javascript
Python内置模块turtle绘图详解
2017/12/09 Python
Python中optparser库用法实例详解
2018/01/26 Python
python读文件保存到字典,修改字典并写入新文件的实例
2018/04/23 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
Python3.5局部变量与全局变量作用域实例分析
2019/04/30 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
Python imread、newaxis用法详解
2019/11/04 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
jupyter notebook插入本地图片的实现
2020/04/13 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
css3与html5实现响应式导航菜单(导航栏)效果分享
2014/02/12 HTML / CSS
生日宴会主持词
2014/03/20 职场文书
个人评语大全
2014/05/04 职场文书
预备党员转正材料
2014/12/19 职场文书
学校国庆节活动总结
2015/03/23 职场文书
2015暑期社会实践个人总结
2015/07/13 职场文书
天气温馨提示语
2015/07/14 职场文书
人生一定要学会的三样东西:放下、忘记、珍惜
2019/08/21 职场文书