ASP.NET Forms验证主要是为了防止Forms被破解危害网站的安全,今天我们将从简单的Forms开始讲述,最后讲解危机将带来什么后果。
ASP.NET提供了内置的登录验证,最为常用的就是Forms验证。讲解如何配置的文章非常多,这里就不再讲如何配置使用这个验证的方式了。下面讲讲其在安全性上存在的一些被忽视的问题。其实它本身没有问题,而使用的方式上会附带出来一些问题。
本文将分三部分讲实际应用中将会遇到的安全性问题,并且加以研究,并尝试提出解决方案。
一、简单的Forms被破解危机
二、垂直划分站点的Forms被破解危机
三、危机将带来什么后果
一、简单的Forms被破解危机
最简单的一个ASP.NET Forms验证,在web.config下配置节点:
- <authentication mode="Forms">
- <forms name=".MyCookies"></forms>
- </authentication>
编写一个帮助类:
- CookieHelper类
- public static class CookieHelper {
- public static string Encrypt(string name, string value) {
- FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, name, DateTime.Now, DateTime.Now.AddDays(1), true, value, "/");
- string authTicket = FormsAuthentication.Encrypt(ticket);
- return authTicket;
- }
-
- public static void Set(string name, string value) {
- HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, Encrypt(name, value));
- cookie.Expires = DateTime.Now.AddDays(1);
- if (HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName] == null)
- HttpContext.Current.Response.Cookies.Add(cookie);
- else
- HttpContext.Current.Response.Cookies.Set(cookie);
- }
-
- public static string Get() {
- if (HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName] == null)
- return null;
- else {
- return HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName].Value;
- }
- }
-
-
来源:
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】
打赏
扫码打赏,您说多少就多少