首页 > 解决方案 > 如何存储在 Perl 脚本中加密的数据库密码?

问题描述

我是 Perl 脚本的新手,我被要求用 Perl 编程语言编写脚本来访问数据库并读取特定表以获取一个状态值。在这个脚本中,我需要提供包含密码的数据库连接详细信息。我想以加密方式存储此密码,以便阅读脚本的任何人都不应识别密码。此外,加密值应该能够在同一个脚本中解密。

有人可以建议我如何实现这一目标吗?

标签: perl

解决方案


您不能通过加密某些东西并向他们提供加密数据和解密工具来对某人保密!

假设您的代码看起来像这样:

my $crypted = get_encrypted_password();
my $password = decrypt($crypted);
my $connection = connect_to_database($password);

然后有人编辑它是微不足道的,所以它看起来像:

my $crypted = get_encrypted_password();
my $password = decrypt($crypted);
print "The database password is: " . $password;

所以这种方法是行不通的。


你需要把你的限制放在用户无法控制的地方。

这可能是应用数据库级别权限的问题(例如,仅授予 SELECT 权限和对特定表的权限 - 取决于您要允许的内容)。

在这种情况下,您最好编写一个在数据库和客户端软件之间运行的 Web 服务。然后,该服务可以执行 authn/authz 并提供一组非常有限的客户端可以执行的操作。


推荐阅读