我正在構建基於API的PHP體系結構。PHP REST API客戶端驗證
我想確保試圖使用不同的API密鑰來使用我的API的客戶端是授權客戶端。例如,將API Key「ABCD1234」分配給域「example.com」。如果域名「fraud.com」嘗試使用此API密鑰,則它們不應該能夠使用該API。我如何在API端執行此檢查?
根據我迄今爲止看到的情況,客戶通過引用標頭非常容易「僞造」它的真實身份。
另外我還記得谷歌地圖首次推出API時,他們實現了一種類似的技術,只有授權的URL可以使用相應的API密鑰。所以這似乎沒有出現可能性的問題。
任何幫助/方向,將不勝感激。
謝謝
-Saf
這取決於如何使用API。它是基於瀏覽器/ Javascript的用例嗎?服務器 - 服務器用例?客戶端應用用例? – deceze
@deceze API最初將在服務器 - 服務器用例中使用。但是,我需要構建它以支持所有其他用例。或者至少可以在業務需求發生變化時添加其他用例的方式構建它。 –
首先,strightforward方法可能可能是從傳入的請求獲取IP地址,併爲它們製作反向DNS,然後將域與白名單進行比較。如果您想消除反向DNS階段,您可以通過IP註冊您的客戶,而不是域。 – Stan