硬编码证书是否可以?

时间:2011-09-01 14:07:40

标签: security passwords hardcode

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

它看起来像这样:

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

感觉非常难以对我们的凭据进行硬编码。但是,我想不出任何其他办法来处理它。把它放在一个常量中并没有真正解决任何问题,将它隐藏在一些文本文件中似乎很荒谬。

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

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

...谢谢

答案 2 :(得分:1)

典型的rails configuration具有存储在文件中的用户名和密码。

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

从文件中读取不应该是一个负担,特别是某种格式的文件:xml,json,yaml,...

答案 3 :(得分:1)

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