详解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的滚动条滚动固定div(附演示下载)
Oct 29 Javascript
javascript中定义类的方法详解
Feb 10 Javascript
详细分析JavaScript函数定义
Jul 16 Javascript
jquery实现用户信息修改验证输入方法汇总
Jul 18 Javascript
JS 调用微信扫一扫功能
Dec 22 Javascript
详解用node.js实现简单的反向代理
Jun 26 Javascript
angularjs 缓存的使用详解
Mar 19 Javascript
Vue常用指令详解分析
Aug 19 Javascript
这应该是最详细的响应式系统讲解了
Jul 22 Javascript
VUE 动态组件的应用案例分析
Dec 02 Javascript
JS实现简单打字测试
Jun 24 Javascript
vue中的可拖拽宽度div的实现示例
Apr 08 Vue.js
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 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
2010/05/16 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
xheditor与validate插件冲突的解决方案
2010/04/15 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
js实现select组件的选择输入过滤代码
2014/10/14 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
2015/11/21 Javascript
jquery.validate提示错误信息位置方法
2016/01/22 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
webpack2.0搭建前端项目的教程详解
2017/04/05 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
Vue使用枚举类型实现HTML下拉框步骤详解
2018/02/05 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
微信小程序支付PHP代码
2018/08/23 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
Vue.js实现大屏数字滚动翻转效果
2019/11/29 Javascript
Vue elementui字体图标显示问题解决方案
2020/08/18 Javascript
[03:59]第二届DOTA2亚洲邀请赛选手传记-VGJ.rOtk
2017/04/03 DOTA
Python的time模块中的常用方法整理
2015/06/18 Python
python3使用scrapy生成csv文件代码示例
2017/12/28 Python
python如何生成网页验证码
2018/07/28 Python
Python PIL图片添加字体的例子
2019/08/22 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
艾滋病宣传活动总结
2014/05/08 职场文书
实验室的标语
2014/06/20 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
企业法人代表证明书
2014/09/27 职场文书
护士自荐信范文
2015/03/25 职场文书
结婚十年感言
2015/07/31 职场文书
2016年“抗战胜利纪念日”71周年校园广播稿
2015/12/18 职场文书
信息技术研修心得体会
2016/01/08 职场文书
导游词范文之颐和园/重庆/云台山
2019/09/10 职场文书
Python实现提取PDF简历信息并存入Excel
2022/04/02 Python
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL