【问题标题】:How to invoke a php file that is located outside public_html如何调用位于 public_html 之外的 php 文件
【发布时间】:2012-07-25 17:15:29
【问题描述】:

我正在创建一个网站,我在安全方面非常强迫症,所以我听说如果您将所有 .php 文件存储在 public_html 文件夹之外,并使用 public_html 文件夹中的另一个 .php 文件调用它们然后您受到攻击的风险较低。这是真的吗,如果是这样,我该怎么做。我读了一些关于使用 .htaccess 的文章,但我不确定这是否是正确的方法。我虽然可以使用 include,但我不确定 include 如何与参数一起使用。

【问题讨论】:

  • 在所有安全措施中,您可以为 php 文件的目录结构采取的措施很少。有些主机甚至不允许您在 Web 根目录下放置任何内容。
  • 谢谢,看看我的主人是否允许这样做。

标签: php security invoke public-html


【解决方案1】:

这种策略并没有提供大量的额外保护。主要是,它确保如果您的服务器配置错误并且无法将 PHP 脚本发送到 PHP 解释器,它不允许将 PHP 代码直接发送到浏览器。

您不会将所有您的 PHP 脚本存储在文档根目录之外。您通常只存储不打算在文档根目录之外公开访问的文件。将包含文件存储在 doc 根目录之外,并像包含任何文件一样包含它们。将作为公共视图的文件存储在文档根目录中,因为它们需要可通过网络访问。

有一种称为Front Controller pattern 的设计模式,其中单个索引页面 (index.php) 接受路由并根据需要包含其他文件。许多 PHP 框架开箱即用地支持这一点。

【讨论】:

  • 好的,所以我应该只将我的 config.php 文件存储在外部并包含它以获取变量?
  • @CristianRivera 是的,这是一种常见的策略
  • 感谢您的帮助,我想看看听起来很酷的前端控制器模式。
  • 我的文档根目录是我的公共文件夹,其中包含 js 文件,其中有一些 ajax 代码会在文档根目录之外调用 php 脚本,我该怎么做?如果没有办法可以做什么?
  • @AnmolRaghuvanshiVersion2.0 如果您需要从 ajax 调用 PHP,您需要在文档根目录中有 一些 PHP 文件。 Web 服务器无法提供不在文档根目录中的文件,因此您需要一些像 ajax.php 这样的文件在 docroot 中,它可能包含/需要 docroot 之外的其他文件。
【解决方案2】:

查看 PHP 包含函数:http://www.php.net/manual/en/function.include.php

但是,我怀疑您尝试做的事情会增加安全性。您从哪里听说它可以提高安全性?

【讨论】:

  • 谢谢你,我不记得我在哪里看到它提高了安全性,我没有花太多时间阅读它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
相关资源
最近更新 更多