2010-09-04 116 views
7

我在寫一個簡單的PHP腳本來訪問Foursquare API。 PHP將始終訪問相同的Foursquare帳戶。目前,我在我的腳本中硬編碼了這個登錄信息。獲取這些信息的最佳方式是什麼?如何在PHP中保護硬編碼的登錄名/密碼?

如果我從這個線程照做,我只需將在網站的根目錄之外的配置文件中的登錄信息: How to secure database passwords in PHP?

這是最好的建議?或者有更好的方法來保護登錄信息?

回答

10

當然,最好的辦法是根本不存儲它。

如果你不能這樣做,將它存儲在一個PHP文件(作爲變量)應該確保它不會被髮送到客戶端。如果你對你的Web服務器突然停止解釋PHP非常偏執,你可以把它放在單獨的文件中,在文檔根目錄之外,或者訪問被拒絕的地方(例如通過.htaccess指令)。

+2

+1 - 把它放在文檔根之外的文件是最好的主意。 – 2010-09-05 00:56:36

0

將它作爲變量存儲在一個.php文件中,作爲一個不容易猜到的文件名的根目錄之外的變量是保證您的證書安全的合理安全方式。但是,如果您可以避免將其存儲在服務器上,那麼這將是最好的。提供一個登錄頁面,根據需要將該信息輸入到會話中,然後在不再需要時丟棄。

4

(有Linux特有的細節在這裏,所以請原諒他們,如果這不是你的平臺...)

如果你在Apache上運行,並可以訪問配置文件(這可能不是與共享主機的情況下),你可以把這樣的線在你的虛擬主機配置(或httpd.conf文件,或其他包括配置文件):

SetEnv FOURSQUARE_PW "your password" 

那麼你的PHP腳本可以在$_SERVER['FOURSQUARE_PW']訪問它。

這裏的好處是,你可以使該配置文件只能由root用戶讀取,因爲apache將使用init.d作爲root啓動。

+0

我在這裏看不到真正的優勢。你想阻止誰閱讀該文件?一個惡意的PHP腳本?他們做的第一件事通常是'print_r($ _ SERVER)' - 很好,很尷尬。 – 2013-02-12 16:15:16

+0

我承認這是一個小優勢,如果有的話,取決於環境。網絡堆棧可能是服務器受到攻擊的最可能途徑,但也可能存在其他攻擊。如果攻擊者通過其他方式獲得訪問權限,他們可能會讀取但不能寫入網站文件... – grossvogel 2013-02-14 18:28:04