【发布时间】:2015-05-28 11:14:44
【问题描述】:
我根本不是真正的 PHP 程序员,主要做 javascript/design,但我正在修改一些别人制作的 PHP 代码,我想知道以下几点:
将基本登录密码存储在 md5() 中的 config.php 文件中,如下所示有什么意义吗?
define("USERNAME", "username");
define("PASSWORD", md5("password"));
我可以理解该常量将被加密存储,当它与登录尝试相比时,它会是这样的:
if(PASSWORD == md5($_SERVER['PHP_AUTH_PW'])) ...
但是,我很难看到在这种情况下使用加密有什么好处,因为它不发送加密数据,而只是使用它来比较登录尝试。如果我错了,谁能告诉我?
【问题讨论】:
-
唯一的问题是,现在如果您回显
$_SERVER['PHP_AUTH_PW'],您将无法读取确切的密码 -
md5()不是加密函数。你使用md5()来散列一个字符串。 -
你是对的。可以读取配置文件的入侵者现在知道密码。最好将
md5("password")的结果存储为define("PASSWORD", "5f4d...");。但即便如此,password_hash()将是更好的选择 -
@Szenis -
$_SERVER['PHP_AUTH_PW']仍然包含明文密码,即使经过比较 -
@MarkBaker a ya of course 但定义的密码没有