详解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 相关文章推荐
form.submit()不能提交表单的原因分析
Oct 23 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
Oct 29 Javascript
JQuery日期插件datepicker的使用方法
Mar 03 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
Jun 15 Javascript
微信小程序图片横向左右滑动案例
May 19 Javascript
解决webpack打包速度慢的解决办法汇总
Jul 06 Javascript
vue 父组件调用子组件方法及事件
Mar 29 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
Apr 18 jQuery
vue用Object.defineProperty手写一个简单的双向绑定的示例
Jul 09 Javascript
js实现图片局部放大效果详解
Mar 18 Javascript
简单了解JavaScript异步
May 23 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
Mar 23 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计算2点经纬度之间的距离代码
2013/08/12 PHP
php文件上传简单实现方法
2015/01/24 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
jQuery实现表头固定效果的实例代码
2013/05/24 Javascript
javascript 动态创建表格
2015/01/08 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
利用yarn实现一个webpack+react种子
2016/10/25 Javascript
原生js实现图片放大缩小计时器效果
2017/01/20 Javascript
Vue keep-alive实践总结(推荐)
2017/08/31 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
浅谈ECMAScript 中的Array类型
2019/06/10 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
javascript实现的图片预览和上传功能示例【兼容IE 9】
2020/05/01 Javascript
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
python实现跨文件全局变量的方法
2014/07/07 Python
Python中的连接符(+、+=)示例详解
2017/01/13 Python
python爬虫框架talonspider简单介绍
2017/06/09 Python
代码详解django中数据库设置
2019/01/28 Python
Pycharm自带Git实现版本管理的方法步骤
2020/09/18 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
奥地利汽车配件店:Pkwteile.at
2017/03/10 全球购物
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
音乐专业自荐信
2014/02/07 职场文书
暖通工程师岗位职责
2014/06/12 职场文书
商场促销活动总结
2014/07/10 职场文书
寻找最美家庭活动方案
2014/08/20 职场文书
学用政策心得体会
2014/09/10 职场文书
个人年终总结结尾
2015/03/06 职场文书
2016党员入党决心书
2015/09/22 职场文书
2016春季幼儿园大班开学寄语
2015/12/03 职场文书
创业的9条正确思考方式
2019/08/26 职场文书
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS