我们的asp.net应用程序存在会话劫持和会话固定问题。我们还实现了SSL。
1..我在web.config文件中添加了下面的代码。
<
<httpCookies httpOnlyCookies="true" requireSSL="true" />
<forms loginUrl="Homepage.aspx"
protection="All"
timeout="20"
name=".ASPXAUTH"
path="/"
requireSSL="true"
slidingExpiration="true"
/>->
2...加密formsathuntication票据,并在用户被加密后添加到cookie中。
<
FormsAuthenticationTicket tkt;
串炊具;
HttpCookie ck;
tkt =新的FormsAuthenticationTicket(1,uname,DateTime.Now,DateTime.Now.AddMinutes(20),false,“您的自定义数据”);
FormsAuthentication.Encrypt(tkt);
新HttpCookie(FormsAuthentication.FormsCookieName,炊具);ck.Path = FormsAuthentication.FormsCookiePath;
Response.Cookies.Add(ck);
-->
3..我正在删除会话变量,并在注销页和错误页上将空值传递给ASP.NET_SessionID。
SessionHandler.EndSession();
Session.RemoveAll();
Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
if (Request.Cookies["ASP.NET_SessionId"] != null)
{
Response.Cookies["ASP.NET_SessionId"].Value = string.Empty;
Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(-20);
}
if (Request.Cookies["AuthToken"] != null)
{
Response.Cookies["AuthToken"].Value = string.Empty;
Response.Cookies["AuthToken"].Expires = DateTime.Now.AddMonths(-20);
}
HttpCookie authcookie = Request.Cookies[FormsAuthentication.FormsCookieName];
authcookie.Expires = DateTime.Now.AddDays(-1D);
Response.Cookies.Add(authcookie);
FormsAuthentication.SignOut();问题还没有解决..。
发布于 2012-05-22 21:37:05
requireSSL="false"详细说明第2点。
这里有两个cookie在使用,一个用于Session,另一个用于FormsAuthentication。FormsAuth cookie标识用户,需要采取所有合理的步骤来保证这个用户的安全。通常,需要SSL是一个很好的步骤(正如您在编辑示例中所应用的那样)。但是,对于开发人员来说,会话cookie通常不会受到严格的检查,但取决于您使用它的方式,它可能也同样敏感。会话固定会窃取会话,而不是身份验证。
举个例子:
FormsAuth cookie,声明"This is UserB",还有一个Session cookie,说明”这个用户是UserB,现在是管理员。“这里的问题(因为它涉及到我最初关注的列表中的第2点)是,服务器没有验证与其会话相关的用户的身份。您可以尽最大努力将会话链接起来,并以某种方式形成身份验证票,并确定您正在加密(SSL)。或者,您可以停止在会话中存储敏感数据(或至少减少它)。当提到上面的“这个用户是管理员”的例子时,更好的实现是将ASP.NET角色和配置文件提供程序与成员资格提供程序结合使用。他们三人并驾齐驱,有很多例子说明如何利用它们来发挥你的优势。
这只是一项可能的调查,正如@JohnFx正确地指出的那样,在你期待一个好的答案之前,你真的需要一个集中的问题。当涉及到安全实现时,重要的是要理解所涉及的概念,而不仅仅是抛出示例代码。到目前为止,您提供的示例代码看起来与讨论会话固定的CodeProject文章相似得令人怀疑,但您是否理解它试图实现的目标呢?你知道它是否适用于你正在经历的问题吗?
https://stackoverflow.com/questions/10709176
复制相似问题