3

我正在和朋友一起做一个小型网络项目。它涉及到很多 MySQL 查询,所以我创建了一个ConnectToDatabase()连接到服务器并选择我们的数据库的函数。

它看起来像这样:

function ConnectToDatabase()
{
    mysql_connect("db.myawesomehost.com", "Bob", "correcthorsebatterystaple");
    mysql_query("USE BobDB;");
}

像这样硬编码我们的凭据感觉真的很糟糕。不过,我想不出任何其他方法来处理它。将它放在一个常量中并不能真正解决任何问题,将它隐藏在某个文本文件中似乎很荒谬。

我还应该关心吗?在有大量人员的大型项目中如何处理?

4

4 回答 4

3

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

于 2011-09-01T14:12:29.520 回答
2

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

谢谢...

于 2011-09-03T05:37:47.037 回答
1

典型的rails 配置 将用户名和密码存储在一个文件中。

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

从文件中读取不应该是太大的负担,尤其是某种格式的文件:xml、json、yaml、...

于 2011-09-01T14:14:31.047 回答
1

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

于 2011-09-01T14:23:34.883 回答