Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 当你的用户被黑客攻击时该怎么办_Asp.net_Authentication_Openid - Fatal编程技术网

Asp.net 当你的用户被黑客攻击时该怎么办

Asp.net 当你的用户被黑客攻击时该怎么办,asp.net,authentication,openid,Asp.net,Authentication,Openid,我最近在我的日志文件中看到一种趋势,即用户代理“MicrosoftURL控件-6.01.9782”导致问题。当我追踪IP时,它来自中国或印度。我们的网站非常针对当地,因此我们很少有来自城市以外的访问者 有趣的是,我看到一个通过openID登录的有效用户。我猜想现在正在发生的事情是,用户计算机的cookie正在被克隆,一个病毒正在劫持会话。我使用内置的asp.net身份验证来处理我的cookie,Microsoft不包括任何IP或用户代理检查,因此我知道我可以复制cookie并伪造登录 我看到谷歌

我最近在我的日志文件中看到一种趋势,即用户代理“MicrosoftURL控件-6.01.9782”导致问题。当我追踪IP时,它来自中国或印度。我们的网站非常针对当地,因此我们很少有来自城市以外的访问者

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

我看到谷歌和Facebook的账户都是这样登录的

我的问题是:

A) 有没有一种简单的方法使asp.net身份验证更安全


B) 我该如何处理这些帐户?(最佳实践)我不收集任何个人信息,也无法与我的一些用户联系。

您可以使用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属性,使cookie仅在存在SSL连接时传输。SSL不保护cookie在用户计算机上时不被读取或操纵,但它确实防止cookie在传输过程中被读取,因为cookie是加密的。 这种方法需要获取SSL证书

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

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

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

请参阅更多:


您需要考虑这里的安全边界。如果最终用户的PC遭到破坏,您无法在您的站点上100%确保攻击者不能像该用户那样行事。一个精心设计的恶意软件可以完全像用户一样运行,看到他们看到的任何东西,并捕获他们键入的任何东西,包括密码


负责任的做法,以及像谷歌这样的网站所做的,是通知用户他们的帐户是从可疑IP访问的,并向他们提供有关如何清理电脑、更改所有网站(尤其是其电子邮件提供商)上的密码以及防止身份盗窃的信息链接。您可以通过批处理作业完成此操作,标记他们的帐户,在他们下次登录时弹出一个鲜红色警告标志,甚至向他们发送一封电子邮件,让他们知道发生了什么。

除了笑话,您可以放弃会话/cookie并提供验证码挑战,以确保这不是自动攻击。如果用户已经被入侵,并且有一个真实的人在假装用户,那么你就不会有太多的运气。我知道这些都是机器人。它们在登录时可能不会造成太大损害,因为它们似乎只是在抓取链接,而且大多数更改都需要javascript。我最担心的是,如果系统遭到破坏,对我的用户来说真的是生死攸关。我希望有一些隐藏的高安全性asp.net,我可以打开它来跟踪ip的变化。真的是生死攸关吗??那你最好想出一个更好的安全方法!这是消防部门使用的紧急警报系统。至少有一部分是这样的。它旨在为紧急情况下的用户提供重要信息。补充电台广播。很好的反馈。我想我的问题是这些用户使用OpenID,所以他们实际上不是我的用户帐户。当我的用户返回时通知他们是很困难的,因为我的站点很少有返回登录。我根本不知道OpenID,但假设他们使用电子邮件地址标识符,这看起来很简单。通知服务提供商他们使用OpenID是另一个负责任的途径。很好的反馈。遗憾的是,我不能使用https,因为为大多数网站提供动力的CMS软件不支持它(它硬编码所有指向http的链接)。实际上,我从未听说过httpOnly cookieshttps://www.owasp.org/index.php/HttpOnlyI 我不认为我可以实现这一点,因为我们使用“FormsAuthentication.SetAuthCookie”来创建我们的auth cookie,其他cookie确实需要javascript读取。Asp.net似乎是web配置中的所有cookie,或者您必须全部创建它们,而不使用任何内置的帮助程序或控件。