PHP中的全局常量:使用全局变量还是定义变量更安全?为什么?

问题描述:

我正在设计一个小型网站,它可以查询SQL数据库系统,而不使用任何CMS。使用global $PASSWORD存储SQL身份验证参数的最安全方式似乎非常不安全(例如,像shellshock一样的安全漏洞)。使用define("PASSWORD","password")更安全吗?PHP中的全局常量:使用全局变量还是定义变量更安全?为什么?

这是第二种方法更安全,如果一个如果我使用这些方法之一写入

define("SOMEOBFUSCATEDANDVERYLONGCONSTANTNAME","password"); 

,是值得加密"password",并与其他方法传递地穴参数?任何解释和建议欢迎!

+2

为什么会'$ password'比'define()'更不安全? – Azrael 2014-10-03 08:03:09

+0

如果黑客能够为密码读取内存,则您的问题比您的PHP运行时未加密数据库密码的事实更大。 – h2ooooooo 2014-10-03 08:05:21

+1

这个问题是不合逻辑的。在全局范围中定义的全局变量或常量具有完全相同的范围 - 全局范围。为什么您需要为全局SQL访问密码变量? – Repox 2014-10-03 08:05:23

使用全局或定义更安全吗?为什么?

根据我的答案是否定的,因为它从一个局部范围到全局范围。当我们调用函数时,我们应该需要在外面回复任何内容。

的第二件事情是,使用全局装置的功能是dependend其他scope..This可以胡来的事情了

请看看here进行了详细的解释

+0

感谢您的评论和链接。我尽可能少地使用全局变量。但是PHP定义了一些像'$ SERVER','$ _GLOBALS','$ _POST','$ _GET'等的全局变量,所以看起来它们不能完全避免。除了这句话,你的答案似乎与@ Repox对我关于范围的问题的评论相矛盾。 – 2014-10-03 11:08:06

+0

@ V.Rossetto请接受答案,如果它帮助..Thanx .. :) – 2014-10-03 13:26:46