Security

在 cgi 腳本中以明文形式保存使用者密碼有多危險?

  • March 19, 2014

我正在建立一個 MySQL 數據庫並為它提供一個 Web 界面。現在,數據庫非常簡單,界面只執行某些 SELECT 語句。我為我的腳本創建了一個使用者,以便在連接這些命令時使用:

CREATE USER 'foo' IDENTIFIED BY PASSWORD 'bar';
GRANT SELECT ON dbname.* TO foo

然後我的 Perl 腳本中有這些行:

my $user = "foo";
my $pw = "bar";

筆記:

  • 數據庫上的數據是完全公開的,使用者可以隨意使用/重新分發它們。我沒有興趣阻止任何人訪問它,它是為科學界提供數據集。
  • 數據是靜態的,任何人都不需要以任何方式修改它們,唯一有權修改的使用者是root(系統上唯一的其他使用者)。

所以,我的問題是,這有多危險?鑑於使用者只有SELECT權限,這個明顯不安全的設置會發生什麼壞事?考慮到上面的兩個註釋,有沒有更好的方法來允許訪問我的腳本?

您應該始終將應用程序密碼放在 O/S 環境變數 (envvars) 中。

  • 只能由分配的 O/S 使用者(或 root)讀取
  • 您不會不小心搞砸文件權限(如果將密碼放入文件中)
  • 您不會不小心將密碼簽入原始碼控制(這在開源中尤為重要)
  • 在重新啟動後倖存
  • envvars 易於使用大多數語言閱讀
  • 您應該遵循最小權限原則,並以自己的使用者身份執行您的 Web 伺服器。

http://perldoc.perl.org/Env.html

引用自:https://dba.stackexchange.com/questions/61258