aspnet c# webservice session, httpcontext and hack

本文关键字:httpcontext and hack session webservice aspnet | 更新日期: 2023-09-27 18:15:18

我得到了一个webmethod:

[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

对我来说,这意味着有人使用bot来访问webmethod并进行随机投票,但我不明白为什么IP是'0.0.0.0',这个家伙如何绕过会话问题,以及这个家伙如何在所有500行中获得相同的确切时间。有小费吗?

aspnet c# webservice session, httpcontext and hack

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

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

看看这个网站,它给了你一些很好的信息,为什么REMOTE_ADDR不会总是工作。建议首先检查Request.ServerVariables("HTTP_X_FORWARDED_FOR"),如果失败,然后检查REMOTE_ADDR。