将我的网页(php页面)保留在生产服务器上的public_html文件夹中是否安全?

时间:2019-02-12 09:05:06

标签: php apache security server

这是我的第一个php项目,我将很快使其联机。最近,我读了一些关于不将php脚本保留在公用文件夹中的文章,因为如果服务器配置不正确,php脚本可能会以纯文本形式显示,并且如果这些脚本具有敏感信息(例如DB凭据等),那将是一个很大的安全问题。 )。但是我相信,我不应该担心。由于我的php页面主要由多个include / require组成。这是一个示例:

home.php

<?php
require_once ('../resources/app_config.php');
require_once ('../resources/includes/functions.php');
require_once ('../resources/includes/header.php');
?>
<body>
The body elements...
</body>
<?php
require_once ('../resources/includes/footer.php');
?>

这是我的项目的目录结构:

resources
  |___ app_config.php
  |___ includes
       |___ functions.php
public_html
  |___ css_dir
  |___ js_dir
  |___ images_dir

  index.php
  home.php
  profile.php

所以我的问题是我应该担心将我的php页面移出公用文件夹,还是没有什么关系?谢谢。

2 个答案:

答案 0 :(得分:0)

如果要确保没有任何东西会使服务器处于不安全状态,即使在最坏的情况下,也可以将文档根目录指向几乎是空的文件夹(仅包含入口点),并在其中包含业务逻辑。另一个文件夹。

例如,Symfony的创建者Fabien Potencier在http://fabien.potencier.org/symfony4-directory-structure.html中提出了以下建议:

  • src/下的源代码
  • public/下的Web文件

这样,即使您的PHP过程失败,但是您的网络服务器仍然可以提供public中的文件,除了简单的引导程序,其他任何人都无法读取(再次以Symfony为例:他们推荐的{{1} }在非常特殊的情况下,只需要将https://github.com/symfony/recipes/blob/master/symfony/framework-bundle/4.2/public/index.php更改为您自己的应用程序。

答案 1 :(得分:-2)

您应该发布的所有内容(例如index.php)都应放在public_html文件夹中。 Web服务器的php引擎处理php并仅发送输出。

如果将您的Web服务器配置为提供php输出的属性,则不会对您造成任何损害。

如果使用的是Apache,请使用.htaccess文件进一步限制对public_html文件夹的访问(例如文件夹索引编制)。