详解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 相关文章推荐
基于jQuery的可以控制左右滚动及自动滚动效果的代码
Jul 25 Javascript
jQuery $.data()方法使用注意细节
Dec 31 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
Aug 02 Javascript
javascript:文字不间断向左移动的实例代码
Aug 08 Javascript
jquery 操作css样式、位置、尺寸方法汇总
Nov 28 Javascript
JS实现网页上随机产生超链接地址的方法
Nov 09 Javascript
jQuery购物网页经典制作案例
Aug 19 Javascript
Javascript发送AJAX请求实例代码
Aug 21 Javascript
轻松实现js选项卡切换效果
Sep 24 Javascript
11行JS代码制作二维码生成功能
Mar 09 Javascript
vue如何实现自定义底部菜单栏
Jul 01 Javascript
js实现无缝轮播图特效
May 09 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预定义变量使用帮助(带实例)
2013/10/30 PHP
php生成图片缩略图的方法
2015/04/07 PHP
PHP7新特性foreach 修改示例介绍
2016/08/26 PHP
laravel获取不到session的三种解决办法【推荐】
2018/09/16 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
跟着JQuery API学Jquery 之二 属性
2010/04/09 Javascript
使用apply方法实现javascript中的对象继承
2013/12/16 Javascript
jQuery隐藏和显示效果实现
2016/04/06 Javascript
jQuery鼠标事件总结
2016/10/13 Javascript
js实现五星评价功能
2017/03/08 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
node.js + socket.io 实现点对点随机匹配聊天
2017/06/30 Javascript
浅谈Vue.js 中的 v-on 事件指令的使用
2018/11/25 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
[02:25]专访DOTA2负责人Erik 国际邀请赛暂不会离开西雅
2014/07/21 DOTA
[01:45]典藏宝瓶2+祈求者身心——这就是DOTA2TI9总奖金突破3000万美元的秘密
2019/07/21 DOTA
python网络编程学习笔记(三):socket网络服务器
2014/06/09 Python
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
Python中的FTP通信模块ftplib的用法整理
2016/07/08 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
2019/08/30 Python
python十进制转二进制的详解
2020/02/07 Python
Python中SQLite如何使用
2020/05/27 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
python3实现名片管理系统(控制台版)
2020/11/29 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
Linux常见面试题
2013/03/18 面试题
红旗团支部事迹材料
2014/01/27 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js