Security 定义(';"JEXEC';")或死(';受限访问';)是如何工作的?

Security 定义(';"JEXEC';")或死(';受限访问';)是如何工作的?,security,joomla,Security,Joomla,该行位于模板和模块的顶部: defined('u-JEXEC')或die('Restricted access') 从以下方面: 此语句检查文件是否从Joomla中调用!会话,它通过使黑客更难破坏您的站点来保护您的站点 \u JEXEC在Joomla的根目录中的index.php文件中定义!站点,是什么阻止人们在自己的站点中定义\u-JEXEC并包括我的模块,因为定义的(“\u-JEXEC”)将返回true?我猜如果黑客控制了您的站点,\u-JEXEC-测试将没有任何功能。但是,只要有人试图破坏

该行位于模板和模块的顶部:

defined('u-JEXEC')或die('Restricted access')

从以下方面:

此语句检查文件是否从Joomla中调用!会话,它通过使黑客更难破坏您的站点来保护您的站点


\u JEXEC
在Joomla的根目录中的
index.php
文件中定义!站点,是什么阻止人们在自己的站点中定义
\u-JEXEC
并包括我的模块,因为
定义的(“\u-JEXEC”)
将返回true?

我猜如果黑客控制了您的站点,\u-JEXEC-测试将没有任何功能。但是,只要有人试图破坏您的站点,代码就会确保他们不能直接在文件层次结构中执行文件,而必须始终通过/index.php输入

是什么阻止人们在自己的网站上定义_JEXEC 包括我的模块

这是不可能的。如果您试图在另一个站点上包含一个php文件,那么返回给您的只是生成的输出,而不是php代码本身,对吗


关于乔纳斯,主要的想法是让乔姆拉按正确的顺序执行。您的代码可能会抛出错误,而没有前面的操作,这些操作可能会向攻击者提供信息。

但是,在只包含声明(如类和函数)的文件中,这一行将无效?是的,调用这样的文件不会执行任何操作,不管_JEXEC-语句是什么,都会抛出任何编译时错误。很高兴知道,因为PSR-2标准与在同一个文件中同时具有副作用和类声明相冲突(Joomla不支持名称空间,这是PSR-2的另一个要求…)。非常感谢。