成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

Dreamweaver 限制訪問(wèn)的BUG

2010-08-28 10:46:24來(lái)源:西部e網(wǎng)作者:

    一,步驟敘述:

1,數(shù)據(jù)庫(kù)文件mysite.mdb,其中兩個(gè)表:admininfo(表示管理員的記錄表)和memberinfo(普通用戶的記錄表)

2,普通用戶登陸頁(yè) login.asp ,添加服務(wù)器行為時(shí)候,選擇基于用戶名和密碼的訪問(wèn)。即表示產(chǎn)生了 Session("MM_Username") (其值即為當(dāng)前正確登陸的用戶名)。因?yàn)榇藭r(shí)為選擇訪問(wèn)級(jí)別,所以代表訪問(wèn)級(jí)別的 Session("MM_UserAuthorization") = ""

3,普通用戶登陸成功頁(yè) personal.asp,服務(wù)器行為“限制對(duì)頁(yè)訪問(wèn)”同樣設(shè)置為用戶名和密碼的訪問(wèn)。實(shí)質(zhì)是判斷Session,即可實(shí)現(xiàn)“限制對(duì)頁(yè)的訪問(wèn)”。

以上2→3均能正常,接著就開(kāi)始出現(xiàn)問(wèn)題了。

4,管理員登陸頁(yè) adminlogin.asp ,添加服務(wù)器行為時(shí)候,選擇基于用戶名、密碼和訪問(wèn)級(jí)別的訪問(wèn)(當(dāng)然這要求admininfo表中必須具有表示訪問(wèn)級(jí)別的字段)。生成Session("MM_Username") (其值即為當(dāng)前正確登陸的管理員名),同時(shí)生成表示訪問(wèn)級(jí)別的Session("MM_UserAuthorization") = CStr(MM_rsUser.Fields.Item(MM_fldUserAuthorization).Value)

5,管理員登陸正確頁(yè) admin.asp,很顯然,服務(wù)器行為“限制對(duì)頁(yè)訪問(wèn)”必須選擇“用戶名、密碼和訪問(wèn)權(quán)限的訪問(wèn)”,級(jí)別的定義值即是admininfo表中表示訪問(wèn)級(jí)別字段的值。同樣也能實(shí)現(xiàn)“限制對(duì)頁(yè)的訪問(wèn)”。

    二、BUG來(lái)了

1,普通用戶登陸。
2,正確登陸。
3,將URL地址直接切換為“admin.asp”的地址。
4,完全可訪問(wèn)。

注:在admin.asp提取Session("MM_UserAuthorization") 是為空值,而當(dāng)從adminlogin.asp正確登陸到adming.asp提取Session("MM_UserAuthorization") 值為數(shù)據(jù)庫(kù)表中相應(yīng)字段的值

得出結(jié)論:代表權(quán)限的訪問(wèn)級(jí)別沒(méi)有起效。Session("MM_UserAuthorization") 針對(duì)同一站點(diǎn)同一數(shù)據(jù)庫(kù)不同表時(shí)——形同虛設(shè)!

    三、原理分析

在管理員登陸成功頁(yè)中,有如下代碼是用來(lái)進(jìn)行“限制對(duì)頁(yè)訪問(wèn)的”

' *** Restrict Access To Page: Grant or deny access to this page
MM_authorizedUsers="administrator"
MM_authFailedURL="adminlogin.asp"
MM_grantAccess=false
If Session("MM_Username") <> "" Then
  If (false Or CStr(Session("MM_UserAuthorization"))="") Or _
         (InStr(1,MM_authorizedUsers,Session("MM_UserAuthorization"))>=1) Then
    MM_grantAccess = true
  End If
End If

If Session("MM_Username") <> "" Then

如果表示用戶的Session不為空,即可MM_grantAccess = true,當(dāng)然,其中還有嵌套IF。

If (false Or CStr(Session("MM_UserAuthorization"))="") Or (InStr(1,MM_authorizedUsers,Session("MM_UserAuthorization"))>=1) Then

因?yàn)镸M_authorizedUsers="administrator",這里的"administrator"是級(jí)別的定義值,即是admininfo表中表示訪問(wèn)級(jí)別字段的值

所以,其只能限制admininfo表其他的訪問(wèn)級(jí)別(非administrator)的管理員的訪問(wèn),而對(duì)于普通會(huì)員而言,其Session("MM_UserAuthorization")值為空,同樣可訪問(wèn)該權(quán)限頁(yè)面。

這就是BUG所在!

    四、目前解決方案

1,要做基于用戶名、密碼和訪問(wèn)級(jí)別的訪問(wèn),必須是同一數(shù)據(jù)庫(kù)表中的。即將普通會(huì)員和管理員的信息都保存在同一表中,區(qū)分他們權(quán)限的方法即是添加一個(gè)代表權(quán)限的字段,使得他們具有不同的值。

當(dāng)然,這不是很完整的,很多情況需要將兩個(gè)表分開(kāi),那么則可以用如下方法:

2,當(dāng)基于用戶名、密碼和訪問(wèn)級(jí)別的訪問(wèn),在代碼 If Session("MM_Username") <> "" Then 繼續(xù)添加內(nèi)容and Session("MM_UserAuthorization") <> "" ,即最后為:

If Session("MM_Username") <> "" and Session("MM_UserAuthorization") <> "" Then

注意:當(dāng)基于用戶名、密碼和訪問(wèn)級(jí)別的訪問(wèn)時(shí),才可以修改(因?yàn)橛性L問(wèn)級(jí)別,就表示有Session("MM_UserAuthorization") );而只當(dāng)基于用戶名和的訪問(wèn)時(shí),則不需要。

    五、最后的建議

當(dāng)然,這個(gè)建議最好給MM公司,即是:當(dāng)基于用戶名、密碼和訪問(wèn)級(jí)別的訪問(wèn)時(shí),代碼判斷行和當(dāng)基于用戶名和的訪問(wèn)時(shí),要不一樣,應(yīng)該是:

If Session("MM_Username") <> "" and Session("MM_UserAuthorization") <> "" Then

關(guān)鍵詞:Dreamweaver

贊助商鏈接:

主站蜘蛛池模板: 九江市| 互助| 河北省| 安吉县| 涟水县| 凭祥市| 丽江市| 大厂| 桑日县| 芮城县| 阜阳市| 广宁县| 合江县| 江津市| 黄梅县| 新源县| 清水县| 黔西县| 华亭县| 开江县| 明水县| 沧源| 温泉县| 都昌县| 隆昌县| 榆社县| 城固县| 板桥市| 濉溪县| 古丈县| 银川市| 乌兰察布市| 井冈山市| 高淳县| 汪清县| 油尖旺区| 高碑店市| 兴安盟| 霍城县| 长宁县| 明水县|