【问题标题】:Is it secure to keep my webpages(php pages) inside public_html folder on a production server?将我的网页(php 页面)保存在生产服务器上的 public_html 文件夹中是否安全?
【发布时间】:2019-02-12 09:05:06
【问题描述】:

这是我的第一个 php 项目,我很快就会上线。最近我阅读了一些关于不将 php 脚本保存在公用文件夹中的文章,因为如果服务器配置不正确,php 脚本可能会以纯文本形式显示,如果这些脚本包含敏感信息(如数据库凭据等),这是一个很大的安全问题。 )。但我相信,我不应该担心。因为我的 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 页面移出公共文件夹还是没有什么可担心的?谢谢。

【问题讨论】:

  • 是的,您可以将 php 文件放在公共文件夹中
  • 有什么我应该注意的(与公共文件夹中的 php 页面有关)@GaurangJoshi

标签: php apache security server


【解决方案1】:

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

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

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

这样,即使你的 PHP 进程失败,但你的网络服务器仍然提供来自 public 的文件,除了简单的引导程序之外,没有人能够读取更多内容(再次以 Symfony 为例:他们推荐的 index.php 只需要很少在非常特殊的情况下从 https://github.com/symfony/recipes/blob/master/symfony/framework-bundle/4.2/public/index.php 更改为您自己的应用程序)。

【讨论】:

  • 感谢您的回答@Nico Haase。我知道有比我更好的解决方案。但现在我必须让它尽可能简单。那你觉得我适合上网吗??
  • 我认为是这样 - 据我所知,您的设置在 public_html 中包含尽可能少的文件,在 resources 中包含更复杂的部分 - 这些文件夹的调用方式并不有趣。您可以改进的一件事:为什么您的public_html 中有三个 PHP 文件?为什么不使用 MVC:一个入口点作为多个控制器之间的调度程序?
  • 好吧,反过来问:“过程编码”仍然是一件好事吗? ;)
【解决方案2】:

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

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

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

【讨论】:

  • 我认为问题不在于一切是否安全,而一切都正确配置 - 更多的是关于“如果出现问题会发生什么以及如何保护这种情况”
  • 完全是@NicoHaase
猜你喜欢
  • 1970-01-01
  • 2010-09-06
  • 2021-08-07
  • 2018-06-29
  • 2013-04-22
  • 1970-01-01
  • 2013-11-05
  • 2013-04-30
  • 1970-01-01
相关资源
最近更新 更多