2011-05-29 73 views
4

我正在公開一個簡單的API,並且需要確保只有授權用戶才能訪問它。我將提供一個API密鑰進行身份驗證。但是,我也希望將API密鑰與某個域關聯(也就是說,它只能在授權域中使用時才能使用)。API安全:如何限制域的訪問?

如果從授權域訪問API,我該如何檢查API端? HTTP_REFERER顯然不可靠。建議?

+1

API是如何使用的?它通過JavaScript訪問? – alex 2011-05-29 23:25:28

+0

有些可以通過JavaScript訪問(因爲它與GET協同工作),而另一些則不可以(因爲它使用POST)。 – StackOverflowNewbie 2011-05-29 23:27:51

+0

Javascript可以做POST很好。 – 2011-05-29 23:45:14

回答

7

你公開哪種API?有許多不同類型的API - 我想你不要暴露你的操作系統的API ...

假設你想揭露一些Web應用程序的API,你可以看看OAuth,這是基於在回調網址上 - 您可以阻止某些域名通過回叫網址被呼叫。

查看更多about OAuth

+0

這是一個Web應用程序API。 OAuth計劃用於第二個版本。任何良好的臨時解決方案? – StackOverflowNewbie 2011-05-29 23:28:31

+0

@StackOverflowNewbie如果您現在無法使用OAuth,只需使用該特定功能(需要auth流程需要回調,如在OAuth中)。在這個階段對你來說是否足夠的解決方案? – Tadeck 2011-05-29 23:30:13

+0

你能說說你的意思嗎? – StackOverflowNewbie 2011-05-29 23:38:20

-2

你想要的源IP地址

REMOTE_ADDR - 或 - HTTP_X_FORWARDED_FOR

+1

這可能是假的。 – Amber 2011-05-29 23:27:56

+0

一旦你有這些,繼續前進,併爲該IP做一個DNS查找。 – CountScary 2011-05-29 23:28:33

+1

你的意思是一些反向DNS查詢?如果兩個域位於同一臺服務器上並且一個域名被允許,但是第二個域名被拒絕訪問OP的服務會怎樣? – Tadeck 2011-05-29 23:31:56

0

HTTP + SSL是支持證書服務器和客戶端複雜的協議集,而且很可能會在此使用案件,但不知何故,我覺得這將是一個矯枉過正。