2012-03-07 62 views
4

我已經注意到,有些API會將API密鑰作爲url參數傳遞,而其他人則會將其傳遞至HTTP HEADER中。我正在開發一個基於Web的應用程序,它將嚴重依賴於REST API,現在我只需要它就可以將API KEY作爲url參數傳遞。將API鍵傳遞給HEADER或URL?

我的問題是這些選項之一是否比另一個更安全?

回答

5

在這兩種情況下,API密鑰都將以未加密方式傳遞。因此,除非您使用HTTPS,否則兩者都不安全。

在實踐中,HTTP頭原來是因爲一點點更安全 -

  1. 的URL獲取存儲在瀏覽器歷史記錄
  2. 的URL獲取存儲在訪問日誌服務器端

另外:除非您要求用戶使用他的憑據登錄,否則無法保護Web上的REST API。任何人都可以輕鬆識別API密鑰並向服務器發出請求。

編輯: 爲了響應@段錯誤的評論 -

網站用戶一般不會進入API密鑰。他們輸入他們的用戶名和密碼,並將其交易以獲取通常被調用的API密鑰或訪問令牌。

如果您強制用戶輸入API密鑰而不是用戶名和密碼,那麼它會很安全。但正如我所說,我沒有看到任何嚴肅的應用程序這樣做。

更具體地說,我的意思是「如果一個後端API預計API密鑰,並且正在對AJAX從瀏覽器調用,並且不要求用戶提供某種形式的憑據,你是沒有安全感」

+0

從未想過將它作爲HTTP HEADER的一小部分好處,我想這樣做。在旁邊,只有它是HTTP,如果API運行在HTTPS上,那麼識別,竊取和API密鑰並不那麼容易。 – ryanzec 2012-03-07 16:38:03

+0

@ryanzec:re。除此之外 - 即使您使用HTTPS,我也可以檢查Firebug中的通信並提取API密鑰。你真的無法用一個API密鑰來保護REST API。 – 2012-03-08 06:48:04

+0

對不起,但拋開只是錯誤的。 「用螢火蟲提取api密鑰」的用戶是授權用戶!如果您要求用戶登錄,那麼這是同一個知道他的密碼的人。 – Segfault 2013-02-11 16:11:45