如何保护ajax处理程序?

时间:2013-06-06 07:18:47

标签: asp.net ajax request handler ashx

我在http://www.mywebsite.com/hello.aspx页面中使用这样的帖子:

$.post("handler.ashx", {}, function (x) { alert(x); });

如何检查运行处理程序的地址?

public void ProcessRequest (HttpContext context) 
{
    // check if request is from http://mywebsite/hello.aspx          

    context.Response.ContentType = "text/plain";
    context.Response.Write("test");
}

或...如何禁用来自不同域的请求处理程序?

1 个答案:

答案 0 :(得分:1)

您可以使用UrlReferrer检查来电是否来自您的网站。一个非常简单的工作示例:

if( !context.Request.UrlReferrer.Contains("site.com/")) ) 
{
   context.Response.End();
   return;
}

在极少数情况下,用户会覆盖推荐人,但这会失败。