【问题标题】:PHP include link not working when fetching edit ID获取编辑 ID 时 PHP 包含链接不起作用
【发布时间】:2019-01-13 18:15:54
【问题描述】:

第一次在这里发帖,但需要帮助,因为我对 PHP 还很陌生,我已经搜索过但找不到类似的问题。

我的索引文件有这个 php 包括:

include($_GET['underside']);

在我的其他页面之一 (opret.php) 上,我创建了一个 CRUD,一切正常。但是,当我尝试从给定 ID 获取数据到我的输入时,该链接将不适用于包含。

链接如下:

<a href="opret.php?rediger=<?php echo $row['TilbudId']; ?>" class="btn btn-info">Rediger</a>

最终在浏览器中是这样的:

http://localhost:8080/StampIT/index.php?underside=opret.php?rediger=7

我知道这似乎有点遥远,但我不知道是否有办法绕过它。我收到这些错误:

警告:include(opret.php?rediger=7):无法打开流:第 56 行的 D:\wamp64\www\StampIT\index.php 中没有这样的文件或目录

警告:include():在 D:\wamp64\www\StampIT\index.php 中打开 'opret.php?rediger=7' 以包含 (include_path='.;C:\php\pear') 失败第 56 行

如果我忘记包含并为所有内容制作单独的页面,我可以让它工作,但是我真的想避免这种情况。

我希望有人可以提供帮助,这在某种程度上是可以理解的。谢谢!

【问题讨论】:

  • 此问题并非特定于 PHP。从硬盘读取文件与读取网站不同。你的代码混合了这两种东西。
  • 嗨,欢迎来到 Stackoverflow。我认为使用未经过滤的输入运行include 是一个潜在的安全漏洞。您应该考虑不同的策略。 (例如,见评论:php.net/manual/en/function.include.php#120069

标签: php mysql url include crud


【解决方案1】:

http://localhost:8080/StampIT/index.php?underside=opret.php?rediger=7

您必须使用 & 符号分隔 GET 参数。应该是

http://localhost:8080/StampIT/index.php?underside=opret.php&amp;rediger=7

此外:包含看起来像一个潜在的文件包含漏洞。攻击者可以操纵该参数并包含不应由您的站点处理的文件(甚至可能是远程脚本)。例如 index.php?underside=/etc/passwd

【讨论】:

  • 非常感谢!现在可以了。我不太担心文件包含漏洞,因为它是针对学校项目的,而且我们还没有被告知安全性,所以我不知道要改变什么:-)
猜你喜欢
  • 2011-03-30
  • 2013-10-30
  • 2013-07-04
  • 2016-10-24
  • 1970-01-01
  • 2016-11-14
  • 2016-02-17
  • 1970-01-01
  • 2011-03-08
相关资源
最近更新 更多