存储全局数据库连接参数的位置

Col*_*ard 3 security perl database-connection

是否存在在perl中存储数据库连接参数和其他全局设置的约定?类似于.NET的.config文件?

背景:我继承了一个基于perl的大型应用程序,它有一堆cgi脚本和几个后台服务,所有这些服务都有硬编码的数据库主机名,用户名和密码.我想找到一个安全的地方来存储这些内容,并且如果可能的话也要坚持使用perl约定.我对perl的经验不多,谷歌似乎没有引导我参加这个会议.

Col*_*ard 8

这是我到目前为止所得到的:

创建一个名为的文件config.pl.将其放在所有脚本都可访问的位置,将权限降低到所有脚本读取它所需的最低限度.

根据本指南关于perlmonks:

使config.pl的内容成为哈希:

dbserver   => 'localhost',
db         => 'mydatabase',
user       => 'username',
password   => 'mysecretpassword',
Run Code Online (Sandbox Code Playgroud)

然后在每个脚本中:

use strict;

# The old way....
#my $dbh = DBI->connect("DBI:mysql:database=mydatabase;host=localhost", "username", "mysecretpassword");

# The new way
my %config = do '/path/to/config.pl';    
my $dbh = DBI->connect("DBI:mysql:database=".$config{db}.";host=".$config{dbserver}."", $config{user}, $config{password});
Run Code Online (Sandbox Code Playgroud)