您现在的位置: 圆点视线 >> 教程 >> 网页设计 >> Dreamweaver教程 >> 文章正文
Dreamweaver限制访问的BUG           ★★★
Dreamweaver限制访问的BUG
作者:netjc.co…  文章来源:netjc.com  点击数:  更新时间:2008-5-17 19:57:02 
 页面功能:【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口 【字体:
   一、步骤叙述:

    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


    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

 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 文章录入:Rainsion    责任编辑:Rainsion  【字体:
 
  • 上一篇文章:

  •  
  • 下一篇文章: 没有了
  • 最新文章
    相关文章
    不要跳转或刷新实现网页区域选择显示
    去除DWMX2004表格宽度辅助
    DreamweaverMX2004实现一个页面两种连接风格
    DWMX新功能试用:可编辑标记属性
    DWMX2004网页中文乱码问题:常见原因
    Dreamweaver轻松实现网页中透明Flash效果
    用DreamWeaverMX制作导航下拉菜单
    Dreamweaver的插件管理器
    在Dreamweaver中插入背景音乐的方法
    网页设计进阶:巧用记事本编辑网页
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
     姓  名: 评 分: 1分 2分 3分 4分 5分
     评论内容: ·严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
    ·用户需对自己在使用本网服务过程中的行为承担法律责任
    ·本站管理员有权保留或删除评论内容。
    ·评论内容只代表机友个人观点,与本网站立场无关。
     
    最 新 推 荐
     
    百度主题推广
    最 新 热 门