我正在尝试'AJAX-ify‘我的网站,以改善用户界面体验。在性能方面,我也在努力摆脱UpdatePanel。我在Encosia上看到了一篇很棒的文章,展示了一种使用PageMethods发帖的方式。我的问题是,页面方法在生产环境中的安全性如何?如果是公开的,任何人都可以创建一个JSON脚本来直接发布到服务器上吗,或者是否正在进行跨域检查?我的PageMethods还会将数据写入数据库(在过滤之后)。
我在页面中使用了表单身份验证,在页面加载时,它会将未经身份验证的用户重定向到登录页面。如果用户直接发布到该方法,该页面上的page方法是否也需要检查身份验证,或者整个页面都继承了该身份验证?(本质上,即使用户只发布到PageMethod,整个页面周期也会发生吗)?
谢谢
发布于 2010-03-21 09:19:49
PageMethods和它们所在的处理程序一样安全。
FormsAuthentication将保护除登录页面以外的所有内容。
在未受保护的处理程序上,如login,您应该只公开1)不敏感或2)验证用户的方法。
编辑:对于关于CSRF和XSS的评论和其他回答,请参阅http://weblogs.asp.net/scottgu/archive/2007/04/04/json-hijacking-and-how-asp-net-ajax-1-0-mitigates-these-attacks.aspx。
发布于 2010-03-21 09:15:56
您正在尝试保护自己免受CSRF攻击。
通过在POST参数中要求授权码,并在初始页面加载时提供授权码,可以防止这些攻击。(授权码应该是每个IP地址和每个用户的,并且应该很快过期)
为了增加安全性,您可以使每个验证码仅可用一次,并让每个请求返回一个新的验证码。(但是,如果任何请求失败,您将需要重新加载页面)
发布于 2018-04-06 02:15:39
我正在做一个大量使用ASP.Net WebForms页面方法的项目,我使用Ajax与其交谈。与用JavaScript编写所有代码相比,这对我来说非常方便。
然而,保护页面方法成为一个困扰我的问题。因此,我看到我可以通过Postman和Fiddler访问页面方法,从而使黑客能够使用您的API。
我的解决方案非常简单,是我偶然发现的。将静态Cookie请求添加到页面方法将为非网站的任何应用程序返回错误。
[WebMethod]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
public static string GetAnything(object dat)
{
HttpCookie myguid = HttpContext.Current.Request.Cookies.Get(Constants.Session.PreventHacking);
var hackguid = myguid.Value ?? ""; //other page method contents
return "anything";
}对此方法的邮递员请求将返回:
{
"Message": "There was an error processing the request.",
"StackTrace": "",
"ExceptionType": ""}而更详细的错误将在LocalHost上显示。
据我所知,有一些浏览器广告可以通过坐在网站旁边拦截API调用。我还没有测试过这个。然而,必须为此构建一个单独的安全修复程序。一旦我执行了一些测试,我会在这里更新。
https://stackoverflow.com/questions/2485445
复制相似问题