清理 PHP 中的文件路径

2024-02-01

我希望确保我的小程序的安全,以便潜在的恶意用户无法查看服务器上的敏感文件。

    $path = "/home/gsmcms/public_html/central/app/webroot/{$_GET['file']}";


    if(file_exists($path)) {
        echo file_get_contents($path);
    } else {
        header('HTTP/1.1 404 Not Found');
    }

我突然意识到,诸如“../../../../../../etc/passwd”之类的输入会很麻烦,但想知道我应该期待哪些其他恶意输入以及如何处理来阻止他们。


真实路径() https://www.php.net/manual/en/function.realpath.php可以让您将任何可能包含相对信息的路径转换为绝对路径...然后您可以确保该路径位于您想要允许下载的某个子目录下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

清理 PHP 中的文件路径 的相关文章

  • Laravel 从 5.6 升级到 Laravel 6

    我有一个项目https github com javedbaloch4 Laravel Booking https github com javedbaloch4 Laravel Booking发展于Laravel 5 6现在我想将其升级到
  • 通过 Ajax 加载内容时,WORDPRESS 音频播放器未加载,MediaElement.js 未应用

    我正在创建一个 WordPress 主题 当我使用 ajax 加载内容时 它不会将 MediaElements js 应用于我的音频播放器 因此不会显示音频 我认为这是因为 MediaElement js 加载了 wp footer 并且此
  • 如何使用 phpunit 运行单个测试方法?

    我正在努力运行一个名为testSaveAndDrop在文件中escalation EscalationGroupTest php with phpunit 我尝试了以下组合 phpunit EscalationGroupTest escal
  • 如何解压 PHP/Lumen/Laravel 的 gzip 请求?

    我收到来自第三方的 gzip 编码文本请求 1mb 所以这是有道理的 我的测试路线 router gt post testgzip function Illuminate Http Request request decompressed
  • MySQL/PDO::quote() 尽管使用 PDO::PARAM_INT 参数,但仍在整数周围加上引号

    无论我传递给什么值 数据类型对 它都会出现 pdo gt quote value type 它总是将其引用为字符串 echo pdo gt quote foo PDO PARAM STR foo as expected echo pdo g
  • 生成大随机数 php [重复]

    这个问题在这里已经有答案了 我想使用 PHP 生成一个包含 75 个字符的数字 我到处寻找 但一无所获 除了这个 http dailycoding com tools RandomNumber aspx http dailycoding c
  • 检查 PHP 中“@”字符后面的单词

    我现在正在制作一个新闻和评论系统 但是我已经在一个部分上停留了一段时间了 我希望用户能够在 Twitter 上引用其他玩家的风格 例如 用户名 该脚本看起来像这样 不是真正的 PHP 只是想象脚本 3 string I loved the
  • Woocommerce 让产品显示在存档页面中

    我正在尝试让所有产品显示在我商店的存档页面中 我想知道他们的id我正在使用我的一个钩子 它在 wp head 上运行并检查 if is product category 我想以某种方式访问 产品的查询并获取它们的 ID if is prod
  • posts_search 中的自定义查询

    如何使用此查询作为我的自定义搜索查询 add filter posts search my search is perfect 20 2 function my search is perfect search wp query sWord
  • 为什么我需要结束 ob_start()?

    php 文档建议我应该用 ob end flush 结束每个 ob start 我在网站的每个页面上使用一个 只是为了允许我在应用程序中的任何位置使用 firephp 日志方法 该应用程序运行良好 但我想知道是否有任何我不知道的东西可能有害
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • 从 .phar 存档中提取文件

    对于 Phar 文件 我完全错过了一些东西 我正在安装一个需要 phpunit pdepend 和其他依赖项的项目 我将它们作为 phar 文件获取 但是 我无法使用命令行工具 php 命令 从中提取文件 我用谷歌搜索了这个问题 但没有发现
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • 在 PHP 中撤销 Google 访问令牌

    正如标题所示 我想以编程方式撤销授予的访问令牌 即在 PHP 中 我发现这个他们的网站 https developers google com identity protocols OAuth2WebServer tokenrevoke 但
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • ini_set 'session.gc_maxlifetime' 为 1 天

    If I do ini set session gc maxlifetime 86400 这是否意味着用户可以将浏览器留在同一页面 非活动状态 最多 1 天 而不必担心会话被垃圾收集并被注销 如果服务器配置不支持此功能会发生什么 它会给我一
  • 简单的 PHP 表单:电子邮件附件(代码 Golf)

    想象一下 一个用户想要在其网站上放置一个表单 该表单将允许网站访问者上传一个文件和一条简单的消息 该消息将立即通过电子邮件发送 即 该文件未存储在服务器上 或者如果该文件存储在服务器上 仅暂时 作为文件附件 并在邮件正文中添加注释 查看更多
  • 如何使用 PHPExcel 库从 Excel 获取日期

    我正在尝试使用 PHPExcel 从 Excel 获取日期 但我没有得到日期 我得到的字符串值不是 1970 以来的秒数 我尝试过的代码是 InvDate trim excel gt getActiveSheet gt getCell B

随机推荐

  • 如何找出文件的字节顺序?

    如何判断文件是大端还是小端 我只是尝试用 matlab 编写一个大端文件 但可能不起作用 现在我想知道是否可以了解它是什么类型 有什么建议吗 一般来说 无法知道给定的数据文件是使用大端字节格式还是小端字节格式创建的 您需要了解文件的类型 如
  • 从 task.run 传递 Grunt 配置选项

    尝试了一些方法 似乎无法让它发挥作用 但我本以为这很简单 我试图在任务运行时将变量 选项传递到 Grunt 初始化配置中 目前我有两个单独的配置 sass dev options style expanded files expand tr
  • 抽象代数和编程[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我要开始学习抽象代数 群 环等 我有兴趣了解任何编程语言 如果有的话 可以帮助我学习 尝试我在理论上学到
  • 如何删除 QPixmap 周围的额外边距?

    我画一个QRectF in the paint我的班级的功能并设置QPixmap作为它的刷子 我从包含此的类构建一个对象QRectF 当我将此项目放入场景并设置场景背景时 会出现 QRectF 它也发生在一个QPixmap我添加到场景中 我
  • 如何模拟 JTextField 上的单击?相当于 JButton doClick()?

    我正在开发一个 Java 项目 需要让按键模拟 JTextField 上的单击 我正在寻找相当于 JButton doClick 方法 我试图让按键 enter 执行与单击 JTextField 完全相同的功能 不确定要提供哪些其他信息 提
  • 将焦点设置到 uwp 中的文本框[重复]

    这个问题在这里已经有答案了 我有一个具有 textBox 元素的通用 Windows 平台项目 我想在单击单选按钮时将焦点设置到它 在单选按钮单击事件中 我可以说 txtBoxID IsEnabled true txtBoxID Text
  • 在 Sprite Kit 中显示像素艺术的最佳方式是什么?

    我很好奇如何为我的游戏展示像素艺术 现在我只是调整大小SKScene to be sceneWithSize CGSizeMake 256 192 这是正确的方法还是有更好的方法来完成此类任务 首先 使用场景的默认大小 您不需要缩放或更改它
  • 如何使用 Swift 进行倒计时

    我在制作计时器应用程序时遇到了困难 所以我想现在我解决了它 我可以帮助其他面临问题的人 所以基本上这个应用程序从当前时间倒计时到特定日期 由于堆栈溢出允许采用问答格式 我希望这可以帮助您 请参阅评论以获取解释 使用计时器计算的倒计时和前导零
  • 删除字符串中除字母以外的所有字符

    如果我有一个字符串 ja v a 如何删除所有非字母字符以输出 java 我努力了str str replaceAll W 但无济于事 你能试试这个吗 System out println ja v a replaceAll a zA Z
  • Android 上的点对点音频通话:语音中断和延迟(接收数据包延迟)增加

    我正在尝试在 Android 上建立点对点音频通话 我使用 Android 手机和平板电脑进行通信 但在收到大约 40 个数据包后 手机几乎停止接收数据包 然后突然收到一些数据包并播放它们 依此类推 但等待时间增加 同样 平板电脑最初接收数
  • Robot Framework调用的测试如何将信息返回到控制台

    我有一个调用 python 方法的机器人框架测试套件 我希望 python 方法能够将消息返回到控制台而不会导致测试失败 具体来说 我正在尝试计算一个过程的时间 我可以使用 raise 将消息返回到控制台 但同时测试失败 def doSom
  • Spring-mvc控制器和异常处理

    想问您一个有关 spring mvc 控制器的最佳实践问题 请查看下面的代码 Autowired SomeService service RequestMapping public ResponseBody Response createS
  • 将文本添加到 android 可绘制 xml

    我正在尝试使用 android 可绘制 xml
  • 访问网络应用程序中文件的内容而不上传

    据我所知 如果不先上传到服务器 然后重新下载给用户 就不可能在网络应用程序中访问用户计算机上的文件内容 除非使用某种插件 Flash等 理想情况下 用户将文件直接上传到本地存储 然后脚本将有机会处理 显示 验证 过滤 而无需用户等待上传 即
  • Spring:如何在Web应用程序和独立程序中获取应用程序上下文

    我是 Spring 框架的新手 我们想在Web应用程序中引入它 3 1 目前在Web层使用struts 在业务层使用服务外观和业务对象 在持久层使用自编写的JDBC DAO 所有这些都是紧密耦合的 我创建了几个 xml 配置 其中一个用于
  • Python pandas 从一列字符串的数据选择中过滤掉 nan

    不使用groupby我如何过滤掉数据而不NaN 假设我有一个客户将填写的矩阵 N A n a 或其任何变体和其他变体将其留空 import pandas as pd import numpy as np df pd DataFrame mo
  • 将大文件读入 R

    我是 R 的新手 但我知道它会因 大 文件而窒息 我正在尝试读取 200MB 的数据文件 我已经尝试过 csv 格式 并将其转换为制表符分隔的 txt 但在这两种情况下 我在文件加载之前就用完了 4GB RAM R 使用 4GB 或内存来加
  • VirtualBox 上的 Android x86:Android 已连接但不在线

    我正在尝试使用 Oracle VirtualBox 配置 Android x86 运行机器 以便它可以与 Eclipse 一起使用 我在使我的虚拟机 在线 时遇到一些麻烦 我通过在 Android 终端模拟器中键入以下内容将手机连接到 ad
  • 检查元组中的元组中是否存在元素

    我有一个元组列表 如下所示 CODES apple reddelicious caramel sweetsticky banana yellowfruit 检查该元组中是否存在值的最佳方法是什么 例如我希望能够说 apple in CODE
  • 清理 PHP 中的文件路径

    我希望确保我的小程序的安全 以便潜在的恶意用户无法查看服务器上的敏感文件 path home gsmcms public html central app webroot GET file if file exists path echo