Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 硬编码凭证可以吗?_Security_Passwords_Hardcode - Fatal编程技术网

Security 硬编码凭证可以吗?

Security 硬编码凭证可以吗?,security,passwords,hardcode,Security,Passwords,Hardcode,我和一个朋友在做一个小的网络项目。它涉及大量MySQL查询,因此我创建了一个连接到服务器并选择数据库的ConnectToDatabase()函数 它看起来像这样: function ConnectToDatabase() { mysql_connect("db.myawesomehost.com", "Bob", "correcthorsebatterystaple"); mysql_query("USE BobDB;"); } 像这样硬编码我们的凭证感觉很糟糕。不过,我想不出

我和一个朋友在做一个小的网络项目。它涉及大量MySQL查询,因此我创建了一个连接到服务器并选择数据库的
ConnectToDatabase()
函数

它看起来像这样:

function ConnectToDatabase()
{
    mysql_connect("db.myawesomehost.com", "Bob", "correcthorsebatterystaple");
    mysql_query("USE BobDB;");
}
像这样硬编码我们的凭证感觉很糟糕。不过,我想不出其他办法来处理这件事。把它放在一个常数中并不能解决任何问题,而把它藏在某个文本文件中似乎很可笑


我应该在乎吗?在有大量人员的大型项目中如何处理此问题?

将其分解到单独的配置文件中。首先,它至少可以让您设置一些变量,比如“DEBUG_MODE”,它可以为您的测试环境切换生产凭据。如果愿意,您可以选择不将单独的文件置于版本控制之下,或者在代码存储库中保留一个带有虚拟凭据的文件,以便用户必须提供自己的凭据,而不是访问全局凭据。

典型的做法是将用户名和密码存储在文件中

将它们分开似乎是合理的,这样您就可以在不共享特定于机器的信息的情况下共享代码。这对于多个开发人员来说非常有用,他们的dev DB有多个用户


从文件中读取不应该是一个很大的负担,特别是一些格式的文件:xml、json、yaml,

正如其他答案所示,大多数大型项目在项目中的某个地方硬编码用户名和密码,通常在配置文件中。我从未见过任何以其他方式执行此操作的方法,但是在非登录用户不需要访问数据库的特定情况下,可以对DB凭据进行加密,并使用每个人的密码作为密码短语对其进行解密。另一个缺点是,如果用户忘记了密码,他们将无法在没有管理员干预的情况下恢复密码,所有现有用户都需要重置密码。

您不应该硬编码任何凭据。最好是从配置文件中读取并缓存它们。即使在这种情况下,您最好不要将凭据放在明文中-我们需要在配置文件中加密凭据。在WSO2,我们从配置文件读取的所有凭据都保持加密,并使用一种称为Secure Valut[通用方法]的方法来读取这些加密凭据,并以明文形式提供给所需的应用程序

谢谢