2011-01-21 73 views
4

在我創建的模塊中,我需要安全地存儲一些敏感信息:遠程數據庫主機,用戶名和密碼。將敏感信息存儲在Drupal模塊中的位置?

似乎唯一可用的存儲是在Drupal數據庫中,這讓我感到擔憂,因爲這意味着如果Drupal受損,那麼這個其他數據庫也是如此。 sites/all/default中的settings.php文件是我的第二選項,但我無法寫入它。 FTP和SSH中的各種chmod命令至777和666不會打開要寫入的文件。我也不確定我設置的變量在其他地方是否可用。

有沒有其他方法可以安全地存儲這些信息?

回答

3

嗯......這似乎是你不應該做的一般事情。編寫一個位於您可以訪問的遠程數據庫的API。

但是如果您堅持直接訪問數據庫。在一個文件中對主機,用戶名和密碼進行硬編碼,將文件放在文檔根目錄之外並從那裏包含它。例如,如果您的文檔根目錄(即Drupal的index.php文件所在的目錄)是/ www/htdocs,請將包含該信息的文件放在/ www/secure之類的文件中,並將其包含在您需要的位置。然後,如果PHP由於某種原因停止工作,文件不在外部世界的可讀位置,但PHP可以根據需要將其包含在網站中。

當然有人可能會看到你包含了這個文件,但是除非他們黑客入侵了你的服務器(而不是Drupal),否則他們將無法看到這個文件。

+0

drupal保持settings.php文件的內容安全,並將其放在文檔根目錄之外有它自己的安全問題。 – mirzu 2011-01-21 18:03:56

+2

@mirzu只要PHP不失敗,Drupal就會保持安全。包含敏感信息(如登錄名或密碼)的文件不應位於文檔根目錄中。特別是不適用於遠程服務器。至少如果MySQL實例是本地的,您可以將其設置爲只接受來自本地主機的傳入預測。 (我認爲這個建議不值得投票下來......) – Endophage 2011-01-21 18:26:36

+0

如果即使沒有PHP文件權限設置正確,settings.php文件也不應該通過http訪問。如果用戶具有本地訪問權限,則將該文件從web-root移出是沒有好處的。允許遠程數據庫僅接受來自此服務器的連接是一個很好的安全措施,無論連接憑證如何存儲,都應該採取措施。 – mirzu 2011-01-21 19:00:06

0

使用配置文件是此類信息的理想選擇。然而,做一個chmod 777或666是一個真的很不好的想法。問題是這兩個設置都允許文件GLOBALLY讀/寫。因此,如果您位於共享主機上,則系統中的其他用戶可以訪問您的文件。在安裝時嘗試使用php的chmod()函數在文件上執行chmod 500。 (500應該在大多數情況下工作,最重要的部分是最後一個數字爲零)。