2009-06-09 130 views
2

我一直使用的ScriptManager來處理所有AJAX調用,但我開始擴大,並正在使用jQuery和JSON消耗的ASP.NET 3.5 Web服務玩耍。我正在使用標準的jQuery調用,你可以在下面看到,這很好用。我擔心安全問題,以及如何確保我不會通過放棄Scriptmanager來打開任何門。任何信息都是值得讚賞的,我在網上發現的更多的是關於實現而不是安全。安全與ASP.NET Web服務使用jQuery

$.ajax({ 
    type: "POST", 
    url: "Webservices/Service.asmx/HellowWorld", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
     alert(msg.d); 
    } 
}); 

UPDATE:在希望有人能提供一些信息碰碰這一點。

我希望只允許通過認證的用戶才能訪問這個服務,我在MVC使用ASP.NET會員服務,並希望確保我的jQuery AJAX(JSON)呼叫正在被認證的用戶執行。任何信息表示讚賞。

回答

0

我一直在尋找在這個問題上是如何處理上的Web服務調用的安全性。回答:如果不用is傳遞某種形式的認證數據,就無法自動認證遠程用戶。

在這種情況下我傳遞包含數據然後我使用對用戶進行認證一個加密的令牌。令牌給他們通過。

如果有更好/更安全的方法,我會開放。

0

在安全性方面,有使用ScriptManager生成客戶端代理來調用Web服務,或直接使用jQuery之間沒有本質的區別。它們最終都會使用純文本有效內容向服務器生成HTTP請求。

如果你所關心的信息和/或運輸的安全性,你需要看看使用SSL來加密客戶端和服務器之間的傳輸信道。

+0

我明白了,我知道不允許GET請求。我更關注跨域調用等。我正在處理Web方法中的SQL注入數據驗證。數據本身並不敏感。我現在只想讓我的Web方法可以訪問其他服務器調用。 希望是有道理的。 謝謝 – 2009-06-09 17:44:54

0

我解決這個問題的方法是在web服務中構建一個驗證子句。

 MembershipUser u =Membership.GetUser(HttpContext.Current.User.Identity.Name); 
    if (u.IsOnline) 
    { 

     //do work 
    } 

可能不是解決問題的最佳方法,它可能是混亂的。但它爲我工作。最理想的是,如果你可以在調用中而不是在服務中檢查HttpContext,但我一直無法弄清楚如何做到這一點。