我正在開發一個使用Java EE和一些開源組件(Spring,Struts 2,jQuery等)的Web應用程序。我的一些網頁需要認證(Spring Security),而其他網站則不需要。我編寫了一些REST API(Restlet),並通過AJAX調用(jQuery)從我的頁面中使用它們。我知道其他網站不能使用我的REST API,除非我啓用CORS,而這正是我想要的。從非瀏覽器客戶端安全的REST API
但是,任何非瀏覽器客戶端(curl,Java應用程序等)都可以調用我的REST API:我該如何禁止?我無法對所有REST API使用身份驗證,因爲我在其中一些應用程序不需要身份驗證的網頁中使用它們。我知道一些API(如Facebook SDK)需要一個application-id來啓用調用,但任何人都可以從包含在我的網頁中的Javascript代碼中竊取密鑰。
我想從服務器端識別HTTP請求是否已從瀏覽器或其他客戶端應用程序發送,以便僅在第二種情況下應用某種身份驗證。正如我所關心的,任何客戶端應用程序都可以設置任何HTTP標頭,所以我不能HTTP標頭,我可以嗎?我認爲我的問題應該是一個常見問題,所以也許我會錯過一些東西。
是的,我很擔心DoS攻擊和其他惡意軟件:我正在尋找一個簡單的解決方案,我可以適用於我所有的API而不會感到頭疼。 –