簡體   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