详解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 相关文章推荐
数组方法解决JS字符串连接性能问题有争议
Jan 12 Javascript
js浏览器本地存储store.js介绍及应用
May 13 Javascript
javascript的动态加载、缓存、更新以及复用(一)
Jun 09 Javascript
jquery操作对象数组元素方法详解
Nov 26 Javascript
jquery实现键盘左右翻页特效
Apr 30 Javascript
js实现简单的省市县三级联动效果实例
Feb 18 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
Jun 20 Javascript
第八篇Bootstrap下拉菜单实例代码
Jun 21 Javascript
jQuery动态创建元素以及追加节点的实现方法
Oct 20 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
Feb 10 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
Mar 30 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
Jun 04 jQuery
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获取本周开始日期和结束日期的方法
2015/03/09 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
2015/04/21 PHP
PHP文件缓存类实现代码
2015/10/26 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
PHP数组常用函数实例小结
2018/08/20 PHP
eval与window.eval的差别分析
2011/03/17 Javascript
js将控件隐藏的方法及display属性介绍
2013/07/04 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
JavaScript字符串常用类使用方法汇总
2015/04/14 Javascript
javascript相关事件的几个概念
2015/05/21 Javascript
详解JavaScript中的异常处理方法
2015/06/16 Javascript
js带点自动图片轮播幻灯片特效代码分享
2015/09/07 Javascript
jquery 重写 ajax提交并判断权限后 使用load方法报错解决方法
2016/01/19 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
Jquery中map函数的用法
2016/06/03 Javascript
Vue.js教程之axios与网络传输的学习实践
2017/04/29 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
基于js的变量提升和函数提升(详解)
2017/09/17 Javascript
Vue数据绑定简析小结
2019/05/07 Javascript
vue将后台数据时间戳转换成日期格式
2019/07/31 Javascript
vant时间控件使用方法详解
2020/12/24 Javascript
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
浅谈Python实现2种文件复制的方法
2018/01/19 Python
python爬虫爬取快手视频多线程下载功能
2018/02/28 Python
python opencv捕获摄像头并显示内容的实现
2019/07/11 Python
jupyter lab文件导出/下载方式
2020/04/22 Python
详解HTML5 canvas绘图基本使用方法
2018/01/29 HTML / CSS
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
培训主管的岗位职责
2013/11/23 职场文书
2014年五一活动策划方案
2014/03/15 职场文书
奥利奥广告词
2014/03/20 职场文书
公司合作意向书
2014/04/01 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
Python 数据可视化之Seaborn详解
2021/11/02 Python