详解PHP中pathinfo()函数导致的安全问题

 更新时间:2017年01月05日 15:26:58   作者:Security  
这篇文章主要给大家介绍了PHP中pathinfo()函数导致的安全问题,文中给出了详细的介绍与示例代码,相信对大家的理解和学习具有一定的参考借鉴价值,需要的朋友可以参考下,下面来一起看看吧。

定义和用法

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"

应用

目录不可控没有执行权限

pathinfo, 一种伪静态的用法,path_info 模式:http://www.xxx.com/index.php / 模块 / 方法:

sb.txt 被当成了模块,实际上请求的还是 6.php

一句话就执行了。

过 WAF 注入

本地安装 apache 安全狗

已知在开启 pathinfo 的情况下 (默认开启) 可以这样访问

常用注入语句被拦截

pathinfo 模式不拦截

总结

以上就是这篇文章的全部内容了,本文也算是抛砖引玉,更多用途请自测!希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

相关文章

  • JS实现轮播图效果

    JS实现轮播图效果

    这篇文章主要为大家详细介绍了JS实现轮播图效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • 无间断滚动marquee的详细用法解析

    无间断滚动marquee的详细用法解析

    无间断滚动marquee的详细用法解析...
    2006-08-08
  • 微信网页登录逻辑与实现方法

    微信网页登录逻辑与实现方法

    这篇文章主要介绍了微信网页登录逻辑与实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • JavaScript获取网页、浏览器、屏幕高度和宽度汇总

    JavaScript获取网页、浏览器、屏幕高度和宽度汇总

    这篇文章主要汇总介绍了JavaScript获取网页、浏览器、屏幕高度和宽度的方法,非常使用,有需要的小伙伴参考下。
    2014-12-12
  • 详解ajax、fetch、axios的区别

    详解ajax、fetch、axios的区别

    本文主要介绍了详解ajax、fetch、axios的区别,众所周知它们都用来发送请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • 解决EventSource 删除单词的前置空格问题记录

    解决EventSource 删除单词的前置空格问题记录

    EventSource是HTML5中的一种新的API,用来实现服务器端向客户端推送事件,相比于常规的轮询方式,EventSource可以实现更加高效、低延迟的数据传输,这篇文章主要介绍了解决EventSource 删除单词的前置空格问题记录,需要的朋友可以参考下
    2024-03-03
  • 颜色选择器 Color Picker,IE,Firefox,Opera,Safar

    颜色选择器 Color Picker,IE,Firefox,Opera,Safar

    颜色选择器 Color Picker,需要的朋友可以参考下。
    2010-11-11
  • 在Node.js中使用Javascript Generators详解

    在Node.js中使用Javascript Generators详解

    下面小编就为大家带来一篇在Node.js中使用Javascript Generators详解。小编觉得挺不错的,现在分享给大家,也给大家做个参考
    2016-05-05
  • 详解ECMAScript6入门--Class对象

    详解ECMAScript6入门--Class对象

    本篇文章主要介绍了详解ECMAScript6入门--Class对象,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 浅谈js的url解析函数封装

    浅谈js的url解析函数封装

    下面小编就为大家带来一篇浅谈js的url解析函数封装。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06

最新评论