2015-04-23 103 views
3

所以我有一個網頁。該網頁訪問一個API與基本身份驗證,oAuth,摘要,無論如何。我必須通過某種身份驗證將API端點發送到其他服務。讓我們假裝它是Facebook OpenGraph API。在哪裏存儲API令牌,用戶/密碼等

Facebook發給我的憑據,以便使用它的API。我在哪裏存儲這些憑證以免受外部攻擊?我一直把它們放在我的服務器端代碼中,就像API文檔告訴你的那樣。這足夠安全嗎?我並不擔心內部濫用,我擔心外部攻擊。

我在哪裏可以放置我的Web應用程序身份驗證憑證,以便用於訪問其他服務,以免受到外部攻擊?

回答

1

作爲使用其他服務混搭的一個重大問題正變得越來越流行。但不幸的是,你實在無法將這些憑證放在實用的地方,在那裏他們完全免受外部攻擊。以下是一些選項:

  1. 將它們保留在源代碼中。攻擊者可以通過配置錯誤的服務器來訪問源代碼,這是服務器軟件的一個弱點。或者,他可以訪問服務器上的文件系統或攔截服務器和Facebook之間的網絡流量。
  2. 將它們保存在服務器外部的數據庫中。但是,你在哪裏保存數據庫的證書,以便你的代碼可以訪問它?您只是將問題移至另一組證書,並且如果數據庫可在本地網絡外訪問,則實際上已增加了攻擊面。
  3. 將它們保存在服務器上的文件中。現在攻擊者將不得不訪問文件系統或攔截網絡流量。所以這比以前的選項更安全。
+0

因此,所有的應用程序都放在D:在服務器上,因此IIS和運行我們的服務器應用程序的用戶顯然已經讀取了寫入D的內容。我正在考慮將它們粘貼到C驅動器某處的配置文件中,或者放在我們的Web應用程序所在文件夾之外的D位置。這樣至少一個不好的配置通常不會通過URL公開證書。它必須是有人獲得文件訪問權限,在那一點上,無論如何,這是非常麻煩的。 – Leeish

+0

的確,我應該提到,在文件保存在webapp文件夾結構之外的情況下,3號只比1更安全:-) –

+0

服務器上的文件非常像'app-configs'。在應用程序設置和應用程序配置之前,我們會保留DB *中的所有設置,除非* DB聲明哪些設置位於ini文件中。所有好的建議。 –

0

如果您擔心外部攻擊,並且具有所有安全意識,則不應將憑據存儲在您的應用中。將憑證存儲在服務器上。當他們需要認證時,你的應用程序應該提示用戶輸入憑證。

身份驗證後,如果您想保留用戶的登錄狀態,請設置Cookie,即會話cookie在瀏覽器會話結束時過期或永久cookie不過期。

+0

但憑據不是用戶憑據。它們是我的服務器使用API​​訪問另一臺服務器的證書。它們對所有「用戶」都是一樣的。我的意思是說,web應用程序。我所說的所有這些代碼都是服務器端代碼。 – Leeish

相關問題