在我的Prestashop的每个文件夹中有哪些index.php文件?

问题描述 投票:2回答:2

我不明白为什么在每个文件夹中我找到相同的index.php文件。

它们看起来像这样:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Location: ../");
exit;

特别是,我不明白为什么宣布"Location: ../"

我使用Prestashop,我不明白变量如何在其他文件上工作。

示例:我有一个新模块,我想显示文本“您已登录!”仅适用于已登录的客户,我可以使用{if} $logged {/if}变量来完成。

也许是因为它在同一个父文件夹或其他东西上?

php prestashop-1.6
2个回答
4
投票
  1. Index.php位于每个文件夹中以防止直接访问文件夹。例如,如果您在浏览器中输入www.myshopurl.com/modules,您将被重定向回主页,因为您不想访问或查看此文件夹的内容。
  2. FrontController方法中的init()类设置了一个聪明的变量$logged。从该类继承的每个控制器(除了后台部分之外的每个控制器)都调用此方法,这就是为什么它在每个首页模板中都可用。

如果您要使用PrestaShop,您需要了解OOP和MVC原则。


0
投票

我不明白为什么在每个文件夹中我找到相同的index.php文件。

这是防止“黑客”进行目录观察的方法。没有此文件,有人可以观察每个目录以查看其内容,即文件和子目录。其中一些文件可供查看和执行。因此,此方法旨在防止目录观察安全漏洞,并且它不仅在PrestaShop中使用。

特别是,我不明白为什么被宣布为“位置:../”。

因此,index.php文件应该在每个目录中以递归方式重定向到先前目录,而根目录将不会到达(即,用于显示站点的主页)。但是这种方法有另一种解决方案,例如:show error 404 - 找不到的页面。

出于安全原因,每个开发人员都应将index.php文件添加到模块,主题或其他目录和子目录的每个目录中。要自动执行此任务,需要一个特殊的命令行程序。例如,这一个:Tool against directory traversal security vulnerability(这个在GitHub上)。

© www.soinside.com 2019 - 2024. All rights reserved.