最近我了解到你可以使用脚本管理器并设置EnablePageMethods =“true”这是我想做的事情,但是有任何安全隐患吗?
此外,还有更好的方法吗?
答案 0 :(得分:4)
EnablePageMethods="true"
真正做的就是生成一个内联JavaScript代理,允许通过ASP.NET AJAX Page Methods
语法回调PageMethods
。
我更喜欢通过.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"
是AJAX调用的返回dataType
。 contentType
描述了您要发送到服务器的内容。
答案 1 :(得分:3)
与向网站添加任何普通网页或服务相比,它没有任何安全隐患。所需的预防措施是相同的 - 不首先验证它们就不要使用任何输入,不要在错误消息中无意中返回敏感信息等。
如果您不介意切换到新平台,有一种更新的方式,可以说更好:ASP.Net MVC和相关的“Web API”。 (You can use Web API with Webforms also,感谢Karl Anderson在评论中注意到。)