隐藏密码的最佳方法是什么?

时间:2011-03-15 17:48:39

标签: python passwords

我有一个连接数据库的Python脚本。显然,我需要密码。我需要把它隐藏在某处。

我的问题是这段代码存储在一个文件夹中,每个有权访问服务器的人都可以查看。所以,如果我把这个密码写在一个文件中加密,那么在代码中就会出现发现它的关键,人们可以把它想出来。

所以,请,如果有人有想法......

5 个答案:

答案 0 :(得分:9)

您正在使用脚本语言并使用密码直接访问数据库。无论你做什么,在某种程度上密码都可以轻松访问。模糊它并不会给你带来太大的好处。

您必须依赖机器的安全性和权限,也许还要依赖数据库(限制来自该特定机器和用户的访问)。

答案 1 :(得分:6)

根本不要将数据库连接凭据存储在Python文件中。而是将它们存储在一个安全的地方,只能由脚本运行的用户帐户读取。

例如,创建一个用于运行此作业的用户帐户,并在该用户帐户的主目录(仅由该用户读取)中创建一个名为database.ini的文件,并将数据库连接字符串和密码放在那里。然后使用标准库中的Python ConfigParser类来读取文件。

然后,该作业可以始终在该用户帐户下运行。您也可以使用正确的凭据在主目录中放置database.ini文件,在您的帐户下运行它,但是没有凭据的任何人都无法运行它。

答案 2 :(得分:1)

查看this问题。他们建议在base64中编码密码(在脚本之外),然后在脚本中包含该字符串并在进行连接之前将其转换回来

答案 3 :(得分:0)

只是为了强化Brian所说的,如果一个程序自动运行(即没有机会提示用户输入密码),任何在相同用户权限下运行的程序都可以访问任何密码。目前尚不清楚你可以做什么 else 。也许如果客户端计算机上的(可信)操作系统可以向主机证明它是从特定路径运行的程序访问的,则可以告诉主机“只打开数据库到/ var / lib / tomcat / bin” / tomcat在appserver.example.com上“。如果您完成了所有这些,攻击者将不得不破坏tomcat可执行文件以进入数据库。

答案 4 :(得分:-1)

更高级的想法是手动执行mysql身份验证。也就是说,学习mysql协议(这是一个带有挑战和响应的标准握手)并自己完成程序。这样,您就不会直接发送密码。