2013-04-05 68 views
10

我知道這個問題可能是過於籠統,但對於縮小問題的目的,這裏是一個簡要說明:使用JQuery調用Web服務時可能存在的威脅是什麼,以及如何避免它們?

我打算忘掉ASP.net UpdatePanel和移動通過JQuery使用AJAX。我擔心,由於JavaScript(以及JQuery代碼)的簡單的客戶端特性,任何尋找我的網頁源代碼的人都可以實現我所調用的Web服務的URL以及正在傳遞的內容到那些網絡服務。

當使用UpdatePanel進行這些類型的操作時,我確定調用Web服務是在服務器端完成的,我不擔心有關調用敏感Web服務的信息公開公開,但現在我計劃通過JQuery使用Ajax,這讓我非常擔心。

我的擔心是否合理?如果屬實,避免Web服務調用信息暴露的威脅的最佳解決方案是什麼?

澄清:說UpdatePanel的時候,我的意思是利用若干技術問題探討,包括ASP.net AJAX,代碼隱藏的鏈條,依靠服務器端的Dll用於執行需要Web服務異步服務器端的操作,而不是jQuery的阿賈克斯用於與服務器進行連接。

+0

由於UpdatePanel還支持客戶端技術,因此「在UpdatePanel上調用Web服務在服務器端完成」的說法似乎有誤。我不認爲移動到jQuery時威脅會改變。事實上,你的網絡服務不應該改變,如果它們已經是安全的。 – 2013-04-08 16:56:11

+0

需要澄清你的問題的重要一點是:「我確定調用Web服務在服務器端完成」 - 這些* web服務*是由ASP.NET自動創建的,還是它們是*單獨* Web服務專門/分別從服務器端調用? – Jesse 2013-04-08 18:32:43

+0

說明:當說到UpdatePanel時,我的意思是利用一系列技術,包括ASP.net AJAX,代碼隱藏和依靠服務器端Dll執行異步服務器端操作,而不是jQuery Ajax,它需要Web服務用於與服務器進行內聯。 – Farshid 2013-04-09 02:06:57

回答

6

互聯網上沒有辦法通過隱藏URL來始終保護您的Web服務。我不確定當你說你的updatepanel從服務器調用Web服務時,你沒有發揮AJAX的真正威力。

保護您的Web服務的一種方法是在Web服務端使用身份驗證。例如,您每次訪問源時都需要發送一些驗證密鑰,這很常見,您有許多公共Web服務使用身份驗證密鑰(如OpenId實現)自行保護它。如果你不想更改Web服務邏輯,我認爲AJAX的jQuery方式不是一個安全選項。

這裏有一個想法,你可以有兩個級別的Web服務,其中一個將打開你可以在jQuery中使用的所有。從當前的Web服務中,從服務器端調用其他安全Web服務。即使現在,您也可以爲某些特定的機器IP配置傳入請求。

在這種情況下,除了您自己的服務器之外,其他任何機構都不能訪問安全保留在防火牆後面的Web服務。這與從應用程序服務器連接到數據庫服務器時所做的類似。

讓我知道這是否有幫助。

5

我要說出我的答案是希望解決的問題:

  1. 假設你的機器其他不是Web服務器上託管你的服務,問題是你給潛在攻擊者的這些機器的名稱/地址。

  2. 攻擊者可以編寫腳本/機器人來抓取您的數據。

  3. 攻擊者可以專注於您的網絡服務,並嘗試破解他們/獲得訪問您的網絡。

  4. 攻擊者可以嘗試在您的Web服務上執行DoS/DDoS。

我已經在過去使用的解決方案是建立在Web服務器上的重量輕的代理,使所有的Ajax調用簡單地指回到當前域。然後,當一個電話進入時,它會被簡單地路由到適當的網絡服務,該服務託管在網絡內部的某個地方。

它創建了網絡上的一個額外的一跳,但它也有這些好處:

  1. 它隱藏託管你的服務的計算機的實際IP。
  2. 您可以輕鬆鎖定該Web服務器並監控異常活動。如果您看到活動高峯,您可能會關閉Web服務。 (如果使用不同的機器,則必須監視兩個盒子,這不是一個大問題,但更容易監視一個盒子。)
  3. 您可以輕鬆將代理中的分佈式緩存層。這可以保護您免受加載/拒絕服務(DoS)攻擊,並且明顯支持正常的Web服務流量。
  4. 您可以隱藏代理級別的身份驗證。公共電話不會背叛你的認證方案。否則,攻擊者可以看到什麼令牌或密鑰或祕密或任何你使用的。在Web服務器上創建代理將隱藏該信息。數據仍然會流過,但您可以再次監控它。

我認爲真正的好處是它減少了應用程序的表面面積,縮小了攻擊者的能力。

2

既然你指的是ASP.Net,知道它的viewstate可以很容易地解密。沒有任何失敗的方法來保護你的代碼(不要說URL)。 如果你的網絡服務被一些參數調用,這些參數可能允許不受限制和危險的操作,那麼你最好開始使用一些用戶/角色/權限管理。

如果您擔心「中間人」攻擊,您最好選擇使用https。

相關問題