2011-07-22 52 views
1

我是一名初學者,在jquery中使用webservices,因此請求dumm問題。是我使用jQuery保護的web服務嗎?專家需要幫助

所以故事就是這樣的。我有一個新的網站,我建立使用jQuery,該調用Web服務的一些Ajax調用的一部分,例:

$.ajax({ 
        type: "POST", 
        url: "/WSProxy.asmx/AddressLookup", 
        data: "{'query': '" + $('#location').val() + "'}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function (data) { 
         $("#location").autocomplete(
          { 
           minLength:3, 
           source: data.d 
          }); 
        } 

       }); 

現在,如果我得到它的權利,現在所有人都知道我有一個Web服務,可以是通過:http://www.mywebsite.com/WSProxy.asmx進行訪問,並且基本上針對正在被暴露的功能進行查詢並按他喜歡的方式調用它們。我的問題:

  1. 是真的嗎?我的ajax /查詢代碼暴露我的webservices?
  2. 我可以阻止/限制未從我的網站進行的呼叫嗎?如果是,如何?

我的網站使用.NET/C#作爲後端/中間層平臺,並且web服務也是用C#編寫的。

請幫忙。

回答

1
  1. 是真的嗎?我的ajax /查詢代碼暴露我的webservices?

是任何JavaScript和HTML總是暴露。

  1. 我可以阻止未從我的站點取/限制呼叫,如果是, 怎麼樣?

是和否您可以引用傳入的HTTP請求url,但可能是僞造的。

所以規則是不要試圖揭露任何敏感部分。

0

是任何人都可以打電話給你的web服務(它很容易學習,只是看螢火/開發工具看瀏覽器做了什麼)。

可以讓用戶登錄之前,他可以調用web服務。或者給他一個令牌(比如CSRF令牌)。或者設計一些簽名機制(但是你必須知道他將使用哪些參數)。

0

有人看着你的AJAX調用會看到什麼樣的地址和格式化你的web服務使用,所以是的,只要它會暴露它(沒有太多點不暴露服務)。您可以在不訪問您的網站的情況下使用它(例如,您可以在HTML代碼中放置一個令牌並要求它存在於Web服務調用中),但無法完全阻止某人編寫將從其下載頁面的代碼你的網站,然後假裝成瀏覽器看這個頁面,然後使用你的服務。

0

基本上拋出去的Javascript一切,HTML被暴露。無論如何,你可以保護它。您可以檢查請求的refferer以確保它來自您的網站,但如果使用網絡服務器,則refferer可能是僞造的。 我們在類似項目上做的另一件事是在AJAX調用中獲取webservice的url,以便它不會出現在源代碼中。儘管如此,它可能會阻止一些低級數據收集器。

如果它不是一個公共資源,你可以在添加一些記錄。

1

你必須保護服務本身。

  • 通過在負責安全的服務內部爲驗證的調用者添加會話,將所有安全性放到那裏。

  • 每次調用您的服務由JavaScript暴露,你必須通過autentication服務,以檢查是否有此人有任何會話,如果不阻止它....