2015-06-27 148 views
0

是否可以阻止從域外部連接到Web服務(服務器)?是否可以限制Web服務訪問它自己的Web應用程序?

例如,考慮一個Web應用程序,使用Twitter的「應用程序只權威性」從Twitter的API獲取數據。 Web應用程序的客戶端使用AJAX來調用它自己的服務器,而服務器又使用Twitter的令牌調用Twitter的API。

儘管令牌從未暴露給客戶端代碼,但有什麼可以阻止外部服務器端應用程序使用客戶端使用的URL調用Web應用程序的服務器,例如耗盡Twitter令牌的速率限制?

回答

0

是否有可能從外域阻斷對Web服務(服務器)連接?

當然。將您的Web服務器的訪問控制列表設置爲從IP範圍之外刪除連接。或者,安裝防火牆。這非常簡單,但我懷疑你的意思是「在其領域之外?」的意思。

從你的描述,你似乎是真的,詢問是否確認你只說你自己的客戶端應用程序。作爲一般規則,不。您可以驗證用戶。這很容易。如果用戶未登錄並被授權使用您的服務,則不會將請求轉發給Twitter。但是你無法驗證應用程序。

如果你要接受誰任何出現的用戶,您不能使用任何他們想要的客戶端阻止他們。如果您允許它在機器上運行,則無法確保它是未經修改的客戶端。他們可以隨時對其進行修改,並且始終可以向您發送來自其他程序的任意流量,並且您無法分辨其差異。在網絡上,字節是字節。

這並不是所有的希望;有些事情你可以做。有關此問題的其他版本,請參閱https://stackoverflow.com/a/9183066/97337,並鏈接到其他幾個版本的問題。 (他們在問他們的方式方面並不完全一樣,但他們都基本上是一樣的答案。)

0

您應該使用用戶和密碼安全或證書安全來保護您的Web服務。基本思想是Web服務客戶端必須進行身份驗證才能調用Web服務。

這裏有一些工藝(有他人或變型):

1)HTTP基本認證和HTTPS

2)相互SSL認證 - 也稱爲雙向認證,是一種方法,其中兩個實體相互認證。服務器向客戶端提供證書,客戶端向服務器提供證書。

3)隨着SOAP Web服務可以使用WS-Security標準。

4)OAuth框架

5)使用REST服務,您可以使用選項1),2),4)。或者由你自己實施一個。 This是很好的推薦。

正如你所看到的,有很多方法來保護Web服務。

+0

請注意,如果您正在對服務的用戶進行身份驗證(因爲您可以爲每個人提供他們存儲在其頭部的憑據),所有這些都很有用。它們對於驗證應用程序無用。 –

+0

好點,但正如@RobNapier所說,我的意思是「應用程序認證」的情況,用戶不認證。 – user847294301

相關問題