如何在用于连接mysql数据库的Perl脚本中加密或隐藏密码

时间:2011-02-09 18:09:40

标签: mysql perl

我想知道存储用户名和密码以连接mysql数据库的最佳方法是什么?

3 个答案:

答案 0 :(得分:13)

一种简单安全的方法 - 如果你做对了 - 就是配置文件。 DBI / DBD MySQL连接字符串看起来像 -

dbi:mysql:my_dbname;mysql_read_default_file=/NON-WEB/path/to/.my.cnf

- 您将不会将任何用户或密码传递给DBI连接调用。

.my.cnf文件将包含密码。保持这种安全的方法包括 -

  • 文件可由webuser读取。
  • 文件位于Web根目录之外;访问网址无法访问该网址。
  • 配置文件包含最小的连接,例如,它可能不需要用户名。
  • 确保应用程序中没有可能允许浏览文件系统的漏洞。
  • webuser的mysql帐户具有有限的权限:没有授权,没有创建|删除表等等。

答案 1 :(得分:0)

请参阅chapter Configuring Perl Programs中的Mastering Perl

(仅因复制限制而链接。)

答案 2 :(得分:-1)

根本无法安全存储用户名/密码。因为最后你的脚本总是必须能够获取数据,否则任何其他人都可能采用相同的方式。

如果存储加密的数据,则必须告诉脚本解密的密钥。因此,如果有人阅读脚本,他就会成为关键。但是在CGI-Environment的情况下,脚本总是需要由Web服务器读取。

如果您不在CGI环境中或运行了一些suExec内容,则可以通过设置脚本/配置文件的访问权限来解决此限制,以便除执行用户之外的其他任何人都无法读取文件。 / p>

这是安全的,直到一些管理员来找并想知道那里有什么或有人黑客你的帐户。