【问题标题】:PHP ::: global $config ::: is it safe? [duplicate]PHP ::: 全局 $config ::: 安全吗? [复制]
【发布时间】:2012-01-13 23:38:23
【问题描述】:

可能重复:
PHP global in functions

使用这样的东西让我担心:

<? global $config; ?>

假设我将我的数据库连接和用于字符串的盐存储在我的 $config 全局变量中。

现在有没有机会使用:

<? global $config; ?>

我以后会遇到问题

如果是这样,如何利用它?

【问题讨论】:

  • 你为什么认为它可以被利用?
  • 另外,“我用于字符串的盐”是什么意思?哪些字符串?
  • 攻击者是否有可能获取或使用全局 $config 中的 DB 信息或 salt 来进行攻击?
  • 您应该为每个密码使用不同的盐,而不是一个盐。
  • 不是必须的,但是使用 MD5 对您的密码进行哈希处理可以。使用真正的密码散列函数。编辑:如果攻击者可以访问您在全局变量中声明的内容,那么他​​已经在其中了。您应该更加关注首先不要让任何攻击者的代码在您的服务器上执行,这样这个问题就变得无关紧要了。

标签: php global


【解决方案1】:

简短的回答是否定的。

global 关键字只是使通常无法访问该变量的函数可以访问该变量。它不会让外部脚本访问它,这纯粹是文件本身是否可以访问的问题。

【讨论】:

  • 是的,明白了。但是,让我再把它弄下来。全局 $config 包含在我正在使用的函数中。
  • 没关系。如果包含它们的文件是安全的,则应用程序内部的代码是安全的。黑客实际上必须能够读取源文件(在这种情况下,他们只能读取文件中的密码等权限)。他们无法访问正在运行的脚本中的变量。 **总是存在 SQL 注入或其他类型的安全漏洞的风险,但这些与 global 关键字没有直接关系。
  • 如果攻击者无法访问包含敏感数据的文件并且攻击者无法在您的服务器上执行他自己的代码,那么您应该没问题。编辑:殴打
  • 谢谢,这是我一直在寻找的答案。
  • @DanKanze:如果这回答了你的问题,你应该接受答案(点击旁边的勾号)。
【解决方案2】:

我以后会遇到问题吗?

如果是这样,如何利用它?

全局变量的问题不在于它们打开了一些可以直接利用它们的魔法门。相反,全局变量往往会使应用程序的设计更加混乱,因为不清楚哪些函数/类/模块依赖于它们。因此,它更难以维护。因此,它们包含错误的可能性更高,这反过来又可能导致迄今为止未知的安全漏洞。因此,程序员不喜欢全局变量。

【讨论】:

  • 很明显,但我们谈论的是几个反复循环的变量。我的问题不是关于应用程序设计,而是关于应用程序安全性。纯粹从安全角度来看,使用全局 $config 是否有任何负面影响?
  • @DanKanze 这是一个完全有效的答案。他会直接告诉您“将来会在哪里遇到问题”(混乱的应用程序设计),并且仅使用 global 并不会为漏洞打开一扇“神奇之门”。
  • @Dan Kanze:我的回答直接针对do global variables make the application unsafe 的问题。答案是否定的,它本身不是。然后我继续解释为什么程序员说要避免使用全局变量以及它们如何导致未来出现问题。
猜你喜欢
  • 2020-12-29
  • 2014-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-23
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多