2017-08-09 90 views
-1

我可以採取哪些措施來防止未經授權訪問我們的API(如果確實需要的話)?通過公共網站暴露的HMAC API?

背景

下圖說明我們正在實施該方法返回商業敏感數據來驗證消費者微型,並且我們提供HMAC API(用於多種用途)。箭頭表示預期的(綠色)和非預期的(紅色)通信。

component diagram

的HMAC API是用於地址自動完成。沒有登錄微型網站。該頁面具有地址輸入。爲了啓用自動完成功能,頁面在每次擊鍵後都會對控制器進行AJAX GET調用。對於每個AJAX GET調用,控制器構造HMAC並向HMAC API發出請求。

問題

我什麼都看不到目前防止AJAX的消費GET方法。

考慮

我已經read是AnitForgeryTokens不在GET方法是有用的,但你可以把它變成一個POST解決這個問題。這聽起來有點醜陋,但由於這只是一個微型網站(即我們在一個月左右就把它扔掉),我已經準備好忍受醜陋的安全感了。

從這七年來,這仍然是最好的方式?

+0

@Amy,我不認爲AJAX調用可以被認證,因爲沒有頁面認證。但也許我錯過了什麼? – OutstandingBill

+0

@Amy,這個令牌是不是必須嵌入到頁面中?因此可能被盜? – OutstandingBill

+0

@Amy - cookie/embedded沒有任何區別,因爲攻擊者只需要請求我們的頁面,獲取令牌,並用他的意外請求附加/嵌入它。 – OutstandingBill

回答

2

防止未經授權的訪問方法未經身份驗證的控制器上

如果你沒有任何的身份驗證和授權(「未控制」),那麼就不可能有這樣的事,作爲一個未經授權的訪問:即每個訪問都是允許的。而且,不存在的東西不能被阻止。

如果您可以在您的用例中定義未經授權的訪問方式,那麼您可能會添加一些防止它的授權。

+0

對不起,我使用的術語具有技術含義,但我用它的更一般的意義。 「未經授權」我的意思是任何來自微型網站之外的請求。 – OutstandingBill

+0

@OutstandingBill:究竟是「外部」還是「內部」?如果「inside」是來自客戶端的特定IP地址範圍,則可以限制IP訪問。如果「內部」意味着瀏覽器首次訪問微型網站並訪問了API,則必須包含此證明,例如由微型網站簽名的一段時間有限的令牌,可以通過API驗證。 –

+0

我們不知道預期用戶的IP地址。用戶不訪問API,他們訪問控制器(人們可以爭論的實際上是一個API,但我試圖與我的圖保持一致)。無論如何,由控制器提供服務的頁面可能包含有限生命期的令牌。令牌可能會「被盜」,並用於未授權的呼叫(一般意義上)。 – OutstandingBill