是否可以将密码以纯文本形式存储在php变量或php常量中?

2022-08-30 14:35:42

根据问题,将密码存储在php页面上是否安全,例如

$password = 'pa$$w0rd';

如果用户看不到它,它是安全的,对吧?

编辑:有些人实际上建议使用哈希,但是,数据库服务器连接密码会有问题,不是吗?


答案 1

简短的答案是“不”,这取决于。

以纯文本形式存储密码几乎从来都不是一个好主意,尤其是在Web可访问的位置,如果没有其他原因,除了简单的服务器配置错误或错误位置的回声可能会将其暴露给世界。

如果你必须存储一个密码,(这是可能的),你可以尝试将其存储在webroot之外,例如把你的代码放在这里
把你的密码放在这里/var/www/public_html//var/www/includes/

比这更好的是让您需要密码的系统(例如数据库包装器)返回已经实例化的对象。因此,与其要求您要求PDO对象,不如将数据库类存储在webroot之外。$databasepassword

这取决于什么攻击媒介会导致某人访问该密码文本,以及它是否要求它们已经在您的文件系统中,如果是这样,您可能无论如何都搞砸了。

另外,如果它是您的supa-secrit订阅者内容的密码,嗯,您失去的只是一些订阅费,如果是您的数据库,您可能会遇到问题,如果它是您的网上银行详细信息,那么对您有好处。

密码保护的东西有多大价值?


答案 2

根据您如何定义安全,任何方法都有其积极和消极的方面。

如果您真的想在源中存储密码,那么最好做这样的事情:

文件:配置.php

if( ! defined('IN_CODE') ) die( 'Hacking attempt' );

define( 'PASSWORD_HASH', '098f6bcd4621d373cade4e832627b4f6' );

文件:索引.php

define( 'IN_CODE', '1' );

include( 'passwd.php' );

if( md5($password) == PASSWORD_HASH )
...

纯文本从来都不是一个好主意,请始终存储要存储的密码的哈希值。

此外,尝试将此类定义与主源文件分开。


推荐