程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET Forms Authentication所生成Cookie的安全性

ASP.NET Forms Authentication所生成Cookie的安全性

編輯:關於ASP.NET

asp.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。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved