详解PHP中pathinfo()函数导致的安全问题
2017-01-05 15:26
603 查看
定义和用法
pathinfo() 函数以数组或字符串的形式返回关于文件路径的信息。
返回的数组元素如下:
- [dirname]:返回文件路径中的目录部分
- [basename]:返回文件路径中文件名的部分
- [extension]:返回文件路径中文件的类型的部分
语法
pathinfo(path,options)
参数
- path: 必需。规定要检查的路径。
- options 可选。规定要返回的数组元素。默认是 all。
可能的值:
- PATHINFO_DIRNAME - 只返回 dirname
- PATHINFO_BASENAME - 只返回 basename
- 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 模式不拦截
总结
以上就是这篇文章的全部内容了,本文也算是抛砖引玉,更多用途请自测!希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
您可能感兴趣的文章:
- PHP pathinfo()获得文件的路径、名称等信息说明
- Nginx隐藏index.php和Pathinfo模式配置例子
- 让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
- 在nginx中配置pathinfo模式支持thinkphp的URL重写
- nginx+thinkphp下解决不支持pathinfo模式
- Ubuntu下Nginx配置ThinkPHP的Pathinfo和URl Rewrite模式
- Nginx配置PATHINFO隐藏thinkphp index.php
- PHP url的pathinfo模式加载不同控制器的简单实现
- PHP命令行执行整合pathinfo模拟定时任务实例
- php使用函数pathinfo()、parse_url()和basename()解析URL
相关文章推荐
- PHP中使用了mcrypt_decrypt函数处理Json串后导致Json_decode返回null问题
- php.ini配置文件详解(为了安全,禁止一些高风险的函数)
- PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
- PHP 5.4 已废弃 magic_quotes_gpc,PHP安全转义函数详解(addslashes 、htmlspecialchars、htmlentities、mysql_real_escape_string、strip_tags)
- PHP弱类型导致的安全问题--md5
- PHP开发中常见的安全问题详解和解决方法
- PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
- PHP json_encode() 函数详解及中文乱码问题
- php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
- PHP开发中常见的安全问题详解和解决方法
- 详解php比较操作符的安全问题
- PHP header函数设置http报文头示例详解以及解决http返回头中content-length与Transfer-Encoding: chunked的问题
- PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
- PHP的strcmp函数引发的安全问题
- 详解php比较操作符的安全问题
- PHP json_encode() 函数详解及中文乱码问题
- PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
- php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
- PHP-函数-mb_strlen函数由于版本问题导致中文字符截断问题
- php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)