Welcome 微信登录

首页 / 网页编程 / ASP.NET / ASP.NET Forms Authentication所生成Cookie的安全性

ASP.NET Forms Authentication所生成Cookie的安全性2011-12-30asp.net forms authentication所生成cookie的安全性

我做这个实验是因为http://community.csdn.net/expert/topic/3927/3927012.xml?temp=.3752405

最初我想,.net的验证应该是比较安全的吧,生成的cookie也应该与这台电脑的独特的参数相关,拿到另一台电脑上就应该无效了。那么是不是一个用户名对应一个cookie值呢?是否能够通过伪造cookie值来骗过表单验证呢?做一番试验。

web.config

<authentication mode="forms"><forms name="mylab" loginurl="/login.aspx"><credentials passwordformat="clear"><user name="fancyray" password="fancyray"/></credentials></forms></authentication.<authorization><deny users="?" /></authorization>
login.aspx只有一个用户名输入框txtusername、一个密码输入框txtpassword和一个提交按钮,click事件如下:

if (formsauthentication.authenticate(this.txtusername.text, this.txtpassword.text)){formsauthentication.redirectfromloginpage(this.txtusername.text, true);}else{response.write("login denied");}
借助iehttpheaders(http://www.blunck.info/)可以看到,通过验证后增加了一个类似这样的cookie:

mylab=3ff83247c29eb5d14d61f389d453eee0586b94e27609c321b017be7b88d1a94d249996428a7a18f5c2d69f3c4dd2b88c00172cafb0b4b4ed8784db62d1d61bcc0c786b4ea7868fc6

看来这就是加密以后的cookie了。下面要换一台电脑,直接将这个值设置为cookie,看看是否需要forms验证。

在login.aspx页面中加上这样一句话:

<script language=javascript>document.cookie="mylab=3ff83247c29eb5d14d61f389d453eee0586b94e27609c321b017be7b88d1a94d249996428a7a18f5c2d69f3c4dd2b88c00172cafb0b4b4ed8784db62d1d61bcc0c786b4ea7868fc6";</script>
这样只要一打开login.aspx页面就会自动加入这个cookie。