Asp.net 当你的用户被黑客攻击时该怎么办
我最近在我的日志文件中看到一种趋势,即用户代理“MicrosoftURL控件-6.01.9782”导致问题。当我追踪IP时,它来自中国或印度。我们的网站非常针对当地,因此我们很少有来自城市以外的访问者 有趣的是,我看到一个通过openID登录的有效用户。我猜想现在正在发生的事情是,用户计算机的cookie正在被克隆,一个病毒正在劫持会话。我使用内置的asp.net身份验证来处理我的cookie,Microsoft不包括任何IP或用户代理检查,因此我知道我可以复制cookie并伪造登录 我看到谷歌和Facebook的账户都是这样登录的 我的问题是: A) 有没有一种简单的方法使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并伪造登录 我看到谷歌
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,或者您必须全部创建它们,而不使用任何内置的帮助程序或控件。