我不明白为什么在每个文件夹中我发现相同的index.php文件。
它们是这样的:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Location: ../");
exit;
特别是,我不明白为什么它被声明为"Location: ../"
。
我使用Prestashop,我不明白变量如何在其他文件上工作。
示例:我有一个新模块,我想显示文本"您已登录!"只有登录的客户,我可以使用{if} $logged {/if}
变量来做到这一点。
可能是因为它在同一个父文件夹或其他什么?
- Index.php在每个文件夹中,以防止直接访问文件夹。例如,如果您输入浏览器www.myshopurl.com/modules,您将被重定向回主页,因为您不应该访问或查看此文件夹的内容。
-
init()
方法中的FrontController
类设置了一个智能变量$logged
。每个从这个类继承的控制器(除了backoffice部分的每个控制器)都会调用这个方法,这就是为什么它在每个首页模板中都可用。
如果你要使用PrestaShop,你需要学习OOP和MVC原则。
我不明白为什么在每个文件夹中我发现相同的index.php文件。
这是防止目录被"黑客"观察的方法。没有这个文件,有人可以观察每个目录来查看它的内容,即文件和子目录。其中一些文件可以用于查看和执行。因此,此方法旨在针对目录观察安全漏洞,并且它不仅在PrestaShop中使用。
特别是,我不明白为什么声明为"Location: ../"。
因此,index.php
文件应该在每个目录中,以便递归地重定向到前一个目录,而不会到达根目录(即,用于显示站点的主页)。但是这个方法还有另外的解决方案,例如:show error 404
- a page not found
出于安全原因,每个开发人员都应该将index.php
文件添加到模块、主题或其他目录和子目录的每个目录中。要自动执行此任务,有一个特殊的命令行程序。针对目录遍历安全漏洞的工具(这个在GitHub上)。