国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
博客園(.Net方向應(yīng)用) - 代碼閱讀總結(jié)之ASP.NET StartKit TimeTracker(角色權(quán)限之捉蟲(chóng)筆記)

在A(yíng)SP.NET StartKit TimeTracker中由于程序設(shè)計(jì)上的小失誤,我們可以利用這個(gè)BUG來(lái)達(dá)到越權(quán)訪(fǎng)問(wèn)aspx頁(yè)面的能力.

我們都知道該系統(tǒng)定義了三種角色,分別為
Administrator(管理員)
Project Manager(項(xiàng)目管理者)
Consultant(顧問(wèn))

只有Administrator角色的用戶(hù)才可以訪(fǎng)問(wèn)管理信息頁(yè)面(ProjectList.aspx)

現(xiàn)在我來(lái)描述一下錯(cuò)誤現(xiàn)象:

現(xiàn)在我有一個(gè)管理員的帳戶(hù)ai_ai@126.com.
我們先用這個(gè)帳戶(hù)登陸,去創(chuàng)建一個(gè)Consultant角色的帳戶(hù):ai_c@126.com
然后馬上關(guān)閉瀏覽器.(注意我這里說(shuō)的關(guān)閉是用MOUSE點(diǎn)擊瀏覽器關(guān)閉按鈕而不是用程序提供的注銷(xiāo)按鈕)
再打開(kāi)瀏覽器進(jìn)入登陸頁(yè),用帳戶(hù):ai_c@126.com登陸系統(tǒng).
這時(shí)我們就可以利用顧問(wèn)角色的帳戶(hù)訪(fǎng)問(wèn)管理信息頁(yè)面
http://localhost/TTWebCSVS_cn/ProjectList.aspx?index=2

這個(gè)BUG豈不是和系統(tǒng)角色訪(fǎng)問(wèn)權(quán)限相背.


現(xiàn)在讓我們來(lái)找蟲(chóng)
我們可以看到該系統(tǒng)的登陸用戶(hù)角色信息是存放在一個(gè)COOKIE中的.
數(shù)據(jù)存放前進(jìn)行了加密,利用了類(lèi)FormsAuthentication.Encrypt的靜態(tài)方法.
該COOKIE的名稱(chēng)在Global中定義為一個(gè)常量:
public const string UserRoles = "userroles"
這就是BUG之一

現(xiàn)在我們?cè)倏碐lobal中Application_AuthenticateRequest事件中另一段代碼:
Response.Cookies[UserRoles].Value = cookieStr;
Response.Cookies[UserRoles].Path = "/";
Response.Cookies[UserRoles].Expires = DateTime.Now.AddMinutes(1);
從以上我們可以得知,該COOKIE的有效時(shí)間是一分鐘.
這樣我們?cè)谇耙坏顷憥?hù)關(guān)閉后,一分鐘內(nèi)馬上利用另一帳戶(hù)登陸,這樣后面的帳戶(hù)可以取到前一帳戶(hù)的角色信息.
因?yàn)?個(gè)登陸帳戶(hù)用的是同一個(gè)叫userroles的COOKIE
這又是BUG之一

為了解決這個(gè)BUG,我們可以對(duì)程序越微修改
就是把COOKIE名稱(chēng)唯一化.

在protected void Application_AuthenticateRequest(Object sender, EventArgs e)

在代碼
if (Request.IsAuthenticated == true) 
{
后面添加
string UserRoles=Global.UserRoles+Context.User.Identity.Name;
這樣可以保證每個(gè)登陸帳戶(hù)的角色信息COOKIE名稱(chēng)不一樣.

同時(shí)注意還要修改,退出按鈕事件 (Banner.ascx.cs中)

private void LogOff_Click(object sender, System.EventArgs e)
        
{
            FormsAuthentication.SignOut();

            
string UserRoles=Global.UserRoles+Context.User.Identity.Name;
            
// Invalidate roles token
            Response.Cookies[UserRoles].Value = "";
            Response.Cookies[UserRoles].Path 
= "/";
            Response.Cookies[UserRoles].Expires 
= new System.DateTime(19991012);

            Context.User 
= null;
            Response.Redirect(
"Default.aspx"false);
        }


當(dāng)然還可以有其他解決辦法
例如把登陸用戶(hù)角色信息數(shù)據(jù)放到系統(tǒng)的身份驗(yàn)證cookie的身份驗(yàn)票的UserData(Cookie中存儲(chǔ)的用戶(hù)定義字符串)中

具體實(shí)現(xiàn)可以參考我的另一文章:
代碼閱讀總結(jié)之ASP.NET StartKit TimeTracker(角色權(quán)限)
http://www.cnblogs.com/aierong/archive/2004/12/21/79966.html

謝謝!

最后修改于2005年4月18日

posted on 2005-01-17 14:56 aierong 閱讀(1930) 評(píng)論(14)  編輯 收藏 收藏至365Key 所屬分類(lèi): asp.net

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
ASP.NET的六大內(nèi)置對(duì)象總結(jié)
ASP.NET頁(yè)面?zhèn)髦祬R總(Session/Server.Transfer/Query String/Cookie/Application)
ASP.NET學(xué)習(xí)筆記 ---系統(tǒng)對(duì)象與狀態(tài)管理大全
跨域讀取Cookie和session之HttpWebRequest另類(lèi)方法(網(wǎng)站API開(kāi)發(fā)
index.aspx.cs 02/admin/登錄模塊
asp.net
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服