我的工作,它使用Session变量来跟踪用户的应用程序,母版页上检查它的存在,否则敲出来登录。我想改变这个表单身份验证,因为我认为它更安全,数据被加密。是什么形式的认证来保护,而不是使用会话变量
有人能告诉我什么数据实际上是加密的吗?我尝试在我的网站上设置Forms Authentication,它工作正常,用户正在被正确地跟踪,并且不能在没有登录的情况下访问页面。但是,当我查看Request Body时,使用Fiddler,我看到了所有表单字段,内容。黑客不能使用它来更改数据并重新提交请求,就像使用从Session变量生成的cookie一样?这个应用程序没有使用SSL,所以我理解SSL会加密正文,但我认为这也是Forms身份验证所要做的。否则它会加密什么,只是Cookie中的会话ID?
这里是我使用的代码:在登录页面我试图手动创建的cookie
<authentication mode="Forms">
<forms loginUrl="default.aspx" name=".ASPXFORMSAUTH_Test" defaultUrl="home.aspx" protection="All"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
:
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
txtEmail.Text,
DateTime.Now,
DateTime.Now.AddMinutes(30),
false,
txtEmail.Text,
FormsAuthentication.FormsCookiePath);
// Encrypt the ticket.
string encTicket = FormsAuthentication.Encrypt(ticket);
// Create the cookie.
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
// Redirect back to original URL.
Response.Redirect(FormsAuthentication.GetRedirectUrl(txtEmail.Text, false));
我也试过:
FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, false);
获得相同的结果,Fiddler的请求主体显示所有提交的字段及其内容。
不是你的问题的答案(我猜cookie值包含一些哈希信息,但不知道。)。无论如何,你不应该手动设置cookie。你应该依赖FormsAuthentication.SetAuthCookie。这里的一些细节:http://stackoverflow.com/a/15199149/1236044 – jbl 2013-05-14 14:50:20