当您的用户遭到黑客入侵时该怎么办

时间:2012-03-22 16:43:50

标签: asp.net authentication openid

我最近在日志文件中看到了用户代理“Microsoft URL Control - 6.01.9782”导致问题的趋势。当我追踪知识产权时,它来自中国或印度。我们的网站是特定于当地的,因此我们很少有来自城外的访客。

有趣的是,我通过openID看到了有效的登录用户。我猜测正在发生的事情是用户计算机cookie被克隆并且病毒正在劫持会话。我使用内置的asp.net身份验证来处理我的cookie,微软不包括对IP或用户代理的任何检查,因此我知道我可以复制cookie并伪造登录。

我看到Google和Facebook帐户都是这样登录的。

我的问题是:

A)是否有一种简单的方法可以使asp.net身份验证更安全?

B)我应该怎么做这些账户? (最佳实践)我不收集任何个人信息,也无法联系我的一些用户。

2 个答案:

答案 0 :(得分:1)

您可以使用HttpOnly阻止客户端脚本通过document.cookie属性访问cookie。 Cookie仍然会进行往返,但脚本无法访问,也不会被盗。

使用ASP.NET 1.1,在Global.asax中添加以下代码:

protected void Application_EndRequest(Object sender, EventArgs e)
{    
    foreach(string cookie in Response.Cookies)    
    {        
        const string HTTPONLY = ";HttpOnly";        
        string path = Response.Cookies[cookie].Path;       
        if (path.EndsWith(HTTPONLY) == false)       
        {            
            //force HttpOnly to be added to the cookie           
            Response.Cookies[cookie].Path += HTTPONLY;        
        }    
    }
}

使用ASP.NET 2.0及更高版本,您可以使用web.config:

<system.web>
    <httpCookies httpOnlyCookies="true" />
</system.web>

如果安全性在您的系统中非常重要,那么更好的方法是投资到您的站点的SSL(安全套接字层)连接。然后,您可以设置一个cookie属性,该属性仅在存在SSL连接时才会传输cookie。 SSL不保护cookie在用户计算机上不被读取或操纵,但它确实阻止cookie在传输过程中被读取,因为cookie是加密的。 这种方法需要获得SSL证书。

这可以在web.config的httpcookies元素中完成。

<system.web>
    <httpCookies requireSSL="true" />
</system.web>

如果连接不是SSL,则不会将cookie发送到服务器。

查看更多:

ASP.NET Cookies FAQ

Design and Deploy Secure Web Apps with ASP.NET 2.0 and IIS 6.0

答案 1 :(得分:0)

您需要在此考虑安全边界。如果最终用户的PC遭到入侵,则您可以在您的站点上执行 nothing ,以100%确定攻击者无法像该用户那样行事。经过精心设计的恶意软件可以完全作为用户操作,查看他们看到的任何内容,并捕获他们键入的任何内容,包括密码。

负责任的要做的事情,实际上像Google这样的网站会通知用户他们的帐户是从可疑的IP访问的,并为他们提供有关如何清理他们的信息的链接PC,在所有网站(尤其是他们的电子邮件提供商)上更改密码并防止身份被盗。您可以通过批处理作业,标记他们的帐户并在他们下次登录时弹出一个明亮的红色警告标志,甚至向他们发送电子邮件,让他们知道发生了什么。