2009-09-10 67 views

回答

3

完全無法保證Web方法的安全。畢竟,如果您從您的網頁訪問它們,則可以直接從客戶端瀏覽器訪問它們。

您可以添加一個額外的參數,需要包含某種一次性密碼/令牌,並在頁面呈現時生成一個。這會讓別人更難以繼續使用您的網絡服務,而無需實際訪問您的網站。

+0

這不完全是真的。你可以放置會話變量[System.Web.Services.WebMethod(EnableSession = true)]你可以放置角色,防僞令牌等,你甚至可以每次生成動態url。我在同一頁面上使用Aspx頁面和aspx Web方法,頁面不是匿名頁面.http://www.dotnetbull.com/2012/06/security-in-aspnet-ajax-webservice.html – 2017-09-28 17:11:25

1

是的,添加WebMethod屬性可以遠程調用該方法,這意味着您可以使用JavaScript調用它。簡單地說,你不應該暴露WebMethods,你不希望第三方能夠打電話。但有關安全和Web服務的更多信息,請參閱:http://msdn.microsoft.com/en-us/magazine/cc188947.aspx

4

您的Web方法將具有與您的網頁相同的安全性。如果您需要確保安全地訪問它們,請在允許執行操作之前檢查有效會話,已通過身份驗證的用戶等。對Web方法的請求應包括確定提出請求的用戶是否已通過身份驗證所需的各種Cookie。根據經過身份驗證的用戶的身份,他們的角色等,您可以確定是否應該處理該請求。如果您使用Web配置來保護您的頁面,則應用於頁面的安全性也應該應用於頁面上的Web方法。

請注意,您不能保證有人不會簡單地發出獨立於瀏覽器的請求(即請求始終來自應用程序的UI內)。您需要進行與您的任何頁面相同的安全檢查。

請注意,我正在討論將安全web方法添加到ASPX頁面。對於網絡服務,認證和授權可能完全不同。例如,每個請求都可能需要憑證,並且可能是方法本身的「信封」或參數的一部分。保護Web服務可能是其自身問題的一個主題。

相關問題