我在ASP.Net MVC网站上有一个非常有趣的黑客案例。对于这个网站,我为我的管理区域实现了一个相当简单的身份验证系统-一个加密的cookie,该cookie具有成员的标识签名。每当管理员访问该网站时,该cookie都会被解密并验证签名。如果匹配,则无需登录。

几天前,我网站上的访问者告诉我,他只需在Statcounter控制台上单击指向我的管理区域的引用链接即可登录我的网站(我已经通过管理视图内的链接访问了他的网站)。

他只是单击statcounter中的链接,然后以管理员身份登录!

发生这种情况的唯一方法是,如果statcounter以某种方式记录了我的Cookie并在他单击指向我的管理员的链接时使用了它们!

这是合乎逻辑的还是可以理解的?

我不明白发生了什么。您对我如何保护我的网站免受此类攻击有任何建议?

更新:我创建了一个IP地址白名单系统,以保护管理员免受未经授权的访问。基本上,服务器现在会将访问者的IP地址与白名单进行比较,并且仅当该IP地址在该列表中时才允许访问。它还支持通配符,因此即使是动态IP地址也可以。

尽管它不是万无一失的,但是它占用了许多安全漏洞。

最佳答案

我不知道您是如何在您的网站上进行身份验证的,但这就是我的身份,并且我认为任何人都不能破坏该身份验证:

var authTicket = new FormsAuthenticationTicket(
          1,
          userName,  //user id
          DateTime.Now,
          DateTime.Now.AddMinutes(20),  // expiry
          createPersistentCookie,
          null,
          "/");

        var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(authTicket));

        HttpContext.Current.Response.Cookies.Add(cookie);


它使用FormsAuthentication并使用您machine.config中的密钥对cookie进行加密

08-25 12:19
查看更多