首页
|
资讯
|
商城
|
产品大全
|
笔记本
|
手机
|
数码
|
硬件
|
办公
|
驱动下载
|
信息化
|
学院
|
IT女性
|
游戏
|
论坛
|
eNet学院俱乐部
»
其他设计
»
Dreamweaver及网页制作
» Dreamweaver 限制访问的BUG
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
复制地址,推荐给QQ/MSN上的好友
|
打印
|
推荐
|
|
收藏
标题: [DW制作技巧] Dreamweaver 限制访问的BUG
像咸鱼一样活
版主
UID 2372343
精华
1
积分 24226
帖子 620
威望 11895
积分 0
阅读权限 100
注册 2007-6-21
来自 嘉兴
状态 离线
#1
发表于 2007-7-27 02:52
资料
主页
文集
短消息
Dreamweaver 限制访问的BUG
一、步骤叙述:
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
[广告]
应届毕业生如何才能找到好工作
投票
交易
悬赏
活动
eNet学院俱乐部
设计学院
> photoshop专区
> 最新教程区
> PS问题求助及讨论专区
> GIF动画制作
> 作品展示及交流区
> Flash
> 其他设计
> CorelDraw
> Dreamweaver及网页制作
> 3DMAX
> Autocad
> 视频讨论
> 素材展示区
> 图片素材
> 设计模板
软件交流
> 新闻讨论
> 软件下载及技巧
> 聊天工具
系统•网络•安全
> 网络•安全
> 经验技巧
学院游乐园
> 学院水吧
> 奥运体育
> 电影音乐
> 谈兵论战
学院俱乐部活动区
> 公告版
> 意见反馈
> 帖子回收站
IT培训
> IT培训
当前时区 GMT+8, 现在时间是 2008-11-19 13:32
Powered by
Discuz!
5.0.0
© 2001-2006
Comsenz Inc.
Processed in 0.021092 second(s), 11 queries , Gzip enabled
TOP
清除 Cookies
-
联系我们
-
硅谷动力网络学院
-
Archiver
-
WAP
界面风格
----------
默认风格
简约之蓝
湖水蓝
控制面板首页
编辑个人资料
修改密码
修改邮箱
积分交易
公众用户组
好友列表
基本概况
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计
笔记本
手机
MP3/MP4
DC/DV
硬件
游戏
GPS
学院
IT经理
数字家庭
综合论坛
办公
服务器
咨询中心
品牌机
程序员
经销商