繁体   English   中英

如何存储在 Perl 脚本中加密的数据库密码?

[英]How to store Database Password encrypted in Perl script?

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

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

你不能。 这实际上是不可能的。

如果 perl 脚本需要能够提供密码,则它需要能够解密密码。 如果它可以解密密码,那么任何使用该脚本的人都可以。

您可以获得的关闭是设置某种可信密钥身份验证,例如 ssh 使用。 这取决于您的数据库支持它。 但即便如此,您的客户端也有一个私钥,其功能很像密码,有权访问脚本的人可以访问私钥,并使用它来验证自己。

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

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

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 并提供一组非常有限的客户端可以执行的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM