国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 辦公 > Dreamweaver > 正文

Dreamweaver 限制訪問的BUG-Dreamweaver教程

2024-09-12 12:30:24
字體:
來源:轉載
供稿:網友

一、步驟敘述:

1、數據庫文件mysite.mdb,其中兩個表:admininfo(表示治理員的記錄表)和memberinfo(普通用戶的記錄表)

2、普通用戶登陸頁 login.asp ,添加服務器行為時候,選擇基于用戶名和密碼的訪問。即表示產生了 session("mm_username") (其值即為當前正確登陸的用戶名)。因為此時為選擇訪問級別,所以代表訪問級別的 session("mm_userauthorization") = ""

3、普通用戶登陸成功頁 personal.asp,服務器行為“限制對頁訪問”同樣設置為用戶名和密碼的訪問。實質是判定session,即可實現“限制對頁的訪問”。

以上2→3均能正常,接著就開始出現問題了。

4、治理員登陸頁 adminlogin.asp ,添加服務器行為時候,選擇基于用戶名、密碼和訪問級別的訪問(當然這要求admininfo表中必須具有表示訪問級別的字段)。生成session("mm_username") (其值即為當前正確登陸的治理員名),同時生成表示訪問級別的session("mm_userauthorization") = cstr(mm_rsuser.fields.item(mm_flduserauthorization).value)

5、治理員登陸正確頁 admin.asp,很顯然,服務器行為“限制對頁訪問”必須選擇“用戶名、密碼和訪問權限的訪問”,級別的定義值即是admininfo表中表示訪問級別字段的值。同樣也能實現“限制對頁的訪問”。

二、bug來了

1、普通用戶登陸。
2、正確登陸。
3、將url地址直接切換為“admin.asp”的地址。
4、完全可訪問。

注:在admin.asp提取session("mm_userauthorization") 是為空值,而當從adminlogin.asp正確登陸到adming.asp提取session("mm_userauthorization") 值為數據庫表中相應字段的值

得出結論:代表權限的訪問級別沒有起效。session("mm_userauthorization") 針對同一站點同一數據庫不同表時——形同虛設!

三、原理分析

在治理員登陸成功頁中,有如下代碼是用來進行“限制對頁訪問的”

' *** 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,當然,其中還有嵌套if。

if (false or cstr(session("mm_userauthorization"))="") or (instr(1,mm_authorizedusers,session("mm_userauthorization"))>=1) then

因為mm_authorizedusers="administrator",這里的"administrator"是級別的定義值,即是admininfo表中表示訪問級別字段的值

所以,其只能限制admininfo表其他的訪問級別(非administrator)的治理員的訪問,而對于普通會員而言,其session("mm_userauthorization")值為空,同樣可訪問該權限頁面。

這就是bug所在!

四、目前解決方案

1、要做基于用戶名、密碼和訪問級別的訪問,必須是同一數據庫表中的。即將普通會員和治理員的信息都保存在同一表中,區分他們權限的方法即是添加一個代表權限的字段,使得他們具有不同的值。

當然,這不是很完整的,很多情況需要將兩個表分開,那么則可以用如下方法:

2、當基于用戶名、密碼和訪問級別的訪問,在代碼 |||

if session

("mm_username") <> "" then

繼續添加內容

and session("mm_userauthorization") <> "" ,即最后為:

if session("mm_username") <> "" and session

("mm_userauthorization") <> "" then

注重:當基于用戶名、密碼和訪問級別的訪問時,才可以修改(因為有訪問級別,就表示有session("mm_userauthorization") );而只當基于用戶名和的訪問時,則不需要。

五、最后的建議

當然,這個建議最好給mm公司,即是:當基于用戶名、密碼和訪問級別的訪問時,代碼判定行和當基于用戶名和的訪問時,要不一樣,應該是:

if session("mm_username") <> "" and session

("mm_userauthorization") <> "" then



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 拉孜县| 佛冈县| 汉沽区| 怀柔区| 木兰县| 万安县| 定州市| 通海县| 常熟市| 诏安县| 南部县| 稻城县| 临高县| 盐山县| 循化| 关岭| 车致| 阳春市| 汨罗市| 英超| 玉林市| 上林县| 十堰市| 玉屏| 博湖县| 神池县| 鄂伦春自治旗| 久治县| 临沂市| 安乡县| 霸州市| 南宁市| 墨江| 岳西县| 辽中县| 于都县| 隆安县| 资中县| 青神县| 晋江市| 安阳市|