aspnet c#webservice session,httpcontext和hack

时间:2011-11-18 18:09:31

标签: c# asp.net web-services

我有一个类似的网络方法:

[WebMethod(EnableSession = true)]
public string some(string value)
{
 Vote vote = new Vote();
 vote.User.Id = ((User)Session["user"]).Id;
 vote.User.Address = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
 vote.value = "";
 // store in the database, using GETDATE() to store the time.
 return "ok";
}

它工作正常,我可以在会话中获取用户ID,并在httpcontext中获取用户ip。

今天,我找到了500行,如:

USER      IP        DATE
1456      0.0.0.0   2011-09-28 02:54:38.493
1456      0.0.0.0   2011-09-28 02:54:38.493
1456      0.0.0.0   2011-09-28 02:54:38.493
1456      0.0.0.0   2011-09-28 02:54:38.493

对我而言,这意味着有人正在使用机器人访问网络方法并进行随机投票,但我无法理解IP为什么会出现'0.0.0.0',该人如何绕过会话问题,以及该人如何能够在所有500行中获得相同的确切时间。有提示吗?

2 个答案:

答案 0 :(得分:1)

看看this site,它会为您提供一些有关REMOTE_ADDR无法始终有效的信息。建议首先检查Request.ServerVariables("HTTP_X_FORWARDED_FOR"),如果失败,请检查REMOTE_ADDR。

答案 1 :(得分:1)

为了解决日期相同的原因,DateTime不是很精确。如果所有500个一次进入(500个请求),那么它可以很好地将它们标记为在DATETIME精度的粒度内具有相同的时间。

至于会话,他们只需要发回加密的cookie。这意味着他们登录,获取cookie,然后使用该cookie发送请求。