包含/引用非PHP文件

3

我知道PHP的include/require语句可以将其他.php文件附加到脚本中,这些文件可以来自本地路径或URL。

今天我尝试了包含和需要一个.ddf(文本文件),并且它起作用了,没有错误或警告。然后PHP实际上执行了那个文件中的一些代码!

之后我查看了PHP的文档以了解是否完全支持和安全地包含非php文件。结果发现,文档几乎没有提到这个过程(include 'file.txt'; // Works.)就是这样。

所以我想问你们,包含非-php文件安全吗?而且这是不是一个不好的做法?


2
为什么你想要这样做? - hlscalon
@1nflktd 我不是,我只是好奇 :) 而且我猜你投了反对票?为什么? - Adrao
1
这样做既安全又合情合理。 - Samsquanch
没有必要这样做。你还会失去正确扩展名带来的语法高亮,当你想编辑其他文件时,这可能会造成问题。 - Tom Hallam
我会给你一个理由。我们一直在使用Laravel Forge。有一个可以在Forge UI中编辑的.env文件。我们在其中放置了一些数据库PHP信息和Drupal设置。我们可以通过UI进行特定于站点的修改,而不是通过SSH进入服务器,但文件名没有后缀.php。这是一个合法的问题。我把它的赞投回到了零。 - mikeDOTexe
显示剩余3条评论
2个回答

7
我只想说这完全不安全。尽管如此,只要您信任该页面,从技术角度来说是可以这样做的。但如果直接在浏览器中打开该文件,它将不会被解析为php。无论是猜测还是您制作了一个框架或者他们只是知道一些文件名,任何人只要直接访问Web服务器上的文件,都会看到完整的文件源代码。这会暴露您的站点,并可能泄露像数据库凭据之类的敏感信息。另一个需要考虑的事情是人们通常很擅长不允许上传*.php文件到他们的站点,但是请想象一下,如果您允许其他文件被包含,并且某人上传了一个名为“someImage.jpg”的文本文件,其中包含有php脚本,并且由于某种愚蠢的原因,您包含了它。那么人们现在就有一种在您的服务器上执行脚本的方法,包括调用shell命令(exec)。以前习惯使用*.inc文件来指定包含文件,但是这已经被认为是不好的做法了。

4

不建议在php脚本中包含txt文件。相反,你应该使用 file_get_contents


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接