2013-07-19 58 views
2

最近我瞭解到,您可以採用腳本管理器並設置EnablePageMethods =「true」,這是我想要做的事情,但是是否存在任何安全隱患?頁面方法和安全

此外,是否有更新的更好的方法呢?

+1

安全隱患與將這些方法放在Web服務中相同。 –

+0

只是FYI pagemethods不能在usercontrols上工作:( –

回答

4

所有這一切EnablePageMethods="true"確實是產生一個內聯JavaScript代理,允許通過PageMethods語法叫回ASP.NET AJAX Page Methods

我更喜歡通過其.ajax()方法使用jQuery調用ASP.NET AJAX Page Methods,像這樣:

代碼隱藏

[WebMethod] 
public static string GetDate() 
{ 
    return DateTime.Now.ToString(); 
} 

的JavaScript:

$.ajax({ 
    type: "POST", 
    url: "PageName.aspx/GetDate", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
     // Do something interesting here. 
    } 
}); 

注:由於ASP.NET AJAX Page Methods自動序列化他們的反應到JSON,然後"json"是退貨dataType的AJAX調用。 contentType描述了你發送給服務器的內容。

+0

爲什麼你更喜歡.ajax的方式?更多控制? –

+2

是的,我更喜歡jQuery .ajax因爲它提供了更多的控制,並且'PageMethods'語法有更多的RPC(遠程過程調用)的感覺,我必須指定額外的參數作爲成功和錯誤的回調函數。我也不是JavaScript塊的狂熱粉絲被注入到t中他的頁面。我可能感覺這樣,因爲我已經開始使用ASP.NET MVC和ASP.NET WebForms進行更多的開發。 –

+0

要麼方法必須是靜態的權利? –

3

它沒有比將任何普通網頁或服務添加到網站更多的安全影響。所需的注意事項是相同的 - 不要在沒有先驗證它們的情況下使用任何輸入,不要在錯誤消息中無意中返回敏感信息等。

有一種更新的方法,並且可以說更好,不介意切換到新的平臺:ASP.Net MVC,以及相關的「Web API」。 (You can use Web API with Webforms also,感謝卡爾·安德森在評論中指出。)

+0

好吧如果你使用webforms?我現在不能切換 –

+1

@MicahArmantrout然後,沒有什麼新的和改進的ASP.Net AJAX,據我所知 – McGarnagle

+1

只是爲了澄清你也可以在WebForms中使用ASP.NET Web API。查看[在ASP.NET Web窗體中使用Web API](http://www.asp.net/web-api/overview/creating-web -apis/using-web-api -with-aspnet-web-forms) –