这是我的第一个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页面移出公用文件夹,还是没有什么关系?谢谢。
答案 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
文件夹的访问(例如文件夹索引编制)。