我有一个连接到数据库的Python脚本。显然,我需要密码。我需要把它隐藏在某个地方。
我的问题是这个代码存储在一个文件夹中,每个有权访问服务器的人都可以查看。所以,如果我把这个密码写在一个文件中加密,那么在代码中就会出现发现它的关键,人们可以把它想出来。
所以,如果有人有想法,请
我有一个连接到数据库的Python脚本。显然,我需要密码。我需要把它隐藏在某个地方。
我的问题是这个代码存储在一个文件夹中,每个有权访问服务器的人都可以查看。所以,如果我把这个密码写在一个文件中加密,那么在代码中就会出现发现它的关键,人们可以把它想出来。
所以,如果有人有想法,请
您正在使用脚本语言并使用密码直接访问数据库。无论你做什么,在某种程度上密码都可以轻松访问。模糊它并不能真正为你买单。
您必须依赖机器的安全性和权限,也许还要依赖数据库(限制来自该特定机器和用户的访问)。
根本不要将数据库连接凭据存储在Python文件中。而是将它们存储在安全的地方,只能由脚本运行的用户帐户读取。
例如,创建用于运行此作业的用户帐户,并在该用户帐户的主目录中创建一个文件(仅由该用户读取) database.ini
并将数据库连接字符串和密码放在那里。然后使用Python ConfigParser
标准库中的类来读取文件。
然后,作业可以始终在该用户帐户下运行。你也可以在你的帐户下运行它 database.ini
使用正确的凭据在主目录中的文件,但没有凭据的任何人都无法运行它。
查看 这个 题。他们建议在base64中编码密码(在脚本之外),然后在脚本中包含该字符串并在建立连接之前将其转换回来
只是为了强化Brian所说的,如果一个程序自动运行(即没有机会提示用户输入密码),任何在相同用户权限下运行的程序都可以访问任何密码。目前尚不清楚是什么 其他 你能做到的。也许如果客户端计算机上的(可信)操作系统可以向主机证明它是从特定路径运行的程序访问的,则可以告诉主机“仅打开数据库到/ var / lib / tomcat / bin” / tomcat在appserver.example.com上“。如果您完成了所有这些,攻击者将不得不破坏tomcat可执行文件以进入数据库。
更高级的想法是手动执行mysql身份验证。也就是说,学习mysql协议(这是一个带有挑战和响应的标准握手)并自己完成程序。这样,您永远不会直接发送密码。