Security
在 cgi 腳本中以明文形式保存使用者密碼有多危險?
我正在建立一個 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 伺服器。