我不明白为什么在每个文件夹中我找到相同的index.php文件。
它们看起来像这样:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Location: ../");
exit;
特别是,我不明白为什么宣布"Location: ../"
。
我使用Prestashop,我不明白变量如何在其他文件上工作。
示例:我有一个新模块,我想显示文本“您已登录!”仅适用于已登录的客户,我可以使用{if} $logged {/if}
变量来完成。
也许是因为它在同一个父文件夹或其他东西上?
FrontController
方法中的init()
类设置了一个聪明的变量$logged
。从该类继承的每个控制器(除了后台部分之外的每个控制器)都调用此方法,这就是为什么它在每个首页模板中都可用。如果您要使用PrestaShop,您需要了解OOP和MVC原则。
我不明白为什么在每个文件夹中我找到相同的index.php文件。
这是防止“黑客”进行目录观察的方法。没有此文件,有人可以观察每个目录以查看其内容,即文件和子目录。其中一些文件可供查看和执行。因此,此方法旨在防止目录观察安全漏洞,并且它不仅在PrestaShop中使用。
特别是,我不明白为什么被宣布为“位置:../”。
因此,index.php
文件应该在每个目录中以递归方式重定向到先前目录,而根目录将不会到达(即,用于显示站点的主页)。但是这种方法有另一种解决方案,例如:show error 404
- 找不到的页面。
出于安全原因,每个开发人员都应将index.php
文件添加到模块,主题或其他目录和子目录的每个目录中。要自动执行此任务,需要一个特殊的命令行程序。例如,这一个:Tool against directory traversal security vulnerability(这个在GitHub上)。