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

时间: 2024-08-08 02:22:04

Dreamweaver中限制访问的BUG的相关文章

如何在Dreamweaver中快速定义站点?

dreamweaver|站点 本文选自4u2v工作室编写的<Dreamweaver网页设计与制作100例>(人民邮电出版社出版,ISBN: 7115142394 ).未经著作权所有者书面授权许可,禁止转载本文. 购买地址:点击访问 在 Dreamweaver 中建立站点,是进行网站开发的第二个关键步骤.这里所讲的建立站点,其实就是在 Dreamweaver 中定义站点.策划站点结构.部署开发环境.定义站点是为了更好地利用[文件]面板对站点文件进行管理,也是为减少一些错误的出现,如路径出错,链接

在Dreamweaver中轻松实现滑动折叠菜单

dreamweaver|菜单 本文选自4u2v工作室编写的<Dreamweaver网页设计与制作100例>(人民邮电出版社出版,ISBN: 7115142394 ).未经著作权所有者书面授权许可,禁止转载本文. 购买地址:点击访问 在网页展示平面有限的情况下,折叠菜单是一个很不错的选择.这种菜单在一般情况下是折叠起来的,只有当浏览者将鼠标移动到菜单上时,菜单才会滑动展开. 效果说明 当鼠标不在菜单上时,菜单处于折叠状态,看起来是很普通的一个菜单栏,如图 18-1 所示.当鼠标移动到菜单栏上时,

Dreamweaver中预览PHP和ASP

PHP和ASP在Dreamweaver中预览,首先你得保证你已经下载并启动了一个web服务器,别管是asp还是php总得有一个. 定义 Dreamweaver 站点 在配置了用来开发 Web 应用程序的系统后,定义用来管理您的文件的 Dreamweaver 站点. 定义本地文件夹 您可为您创建的每一个新 Web 应用程序定义 Dreamweaver 本地文件夹.本地文件夹是您在硬盘上用来存储站点文件的工作副本的文件夹.定义本地文件夹还使您能够通过单击按钮来管理文件并将文件传输到 Web 服务器和

Dreamweaver中如何远程发布网站站点

本文章说明如何使用 Macromedia Dreamweaver 8 设置远程站点,以及如何发布 Web 页.远程站点通常是运行 Web 服务器的远程计算机上保存本地文件副本的位置.用户在浏览器中查看您的页时,就是在访问在 Web 服务器上运行的远程站点. 了解远程站点 创建了 Web 站点后,下一步就是通过将文件上传到远程文件夹来发布该站点.远程文件夹是存储文件的位置,这些文件用于测试.生产.协作和发布,具体取决于您的环境.Dreamweaver 将此文件夹称为远程站点. 在继续之前,您必须能

如何在Dreamweaver中进行数据库连接

在实例<构建开发环境>中已经为开发网络应用程序构建好了开发环境,但要开发网络数据库,还必须做好数据库的连接工作.从本实例开始 将以一家玩具公司电子商务平台的开发为例,详细讲解 Dreamweaver+ASP.NET+Access 网络数据库的开发过程.本实例主要讲解数据库连接技术. 效果说明 通过单击[数据库]面板中的[ OLE DB 连接],创建与 Access 的数据库连接" dwconn ",结果如图 75-1 所示. 创作思想 某玩具公司电子商务平台的数据库由 Dr

Dreamweaver中如何拆分单元格

  今天小编为大家介绍一下Dreamweaver中如何拆分单元格. 拆分单元格 首先将光标移到需要拆分的单元格中,点击属性窗口中"拆分单元格"按钮,在弹出窗口中填写你需要拆分的行或列. 确定拆分后就可以得到下图中的效果.

解决在Dreamweaver中不支持中文文件名

dreamweaver|解决|文件名|中文     用Dreamweaver制作网页时,如果插入的图片.GIF动画.声音.视频或链接的网页是用中文命名的,在用IE浏览器浏览时可能显示不出来.以至于大家不得不将用到的素材全改为英文文件名,然后再在Dreamweaver中引用.随着素材的增多,因为是英文文件名,要查找某个文件是多么不方便呀! 经过摸索,笔者发现Dreamweaver可以插入以中文命名的素材.也可以链接以中文命名的网页.在插入素材或链接网页后切换到代码窗口,将乱码文件名改为相应的中文文

dialog工具中,访问用户输入的结果为什么要重定向&amp;amp;quot;标准错误流&amp;amp;quot;?而不是“标准输出流”?

问题描述 dialog工具中,访问用户输入的结果为什么要重定向"标准错误流"?而不是"标准输出流"? 标题限制,完整问题为------dialog工具中,对于文本输入,访问用户输入的结果为什么要重定向"标准错误流"?而不是"标准输出流"? 看Neil Matthew著的<Linux程序设计>65页中关于dialog访问用户输入结果的一点思考,想知道其中的一些机制.小白求助亲们解答一些,谢谢. 解决方案 iunx 下

ASP视频:Dreamweaver中建立站点和连接数据库

大家在初学ASP程序的时候,我们经常第一个任务就是配置环境!在这里根据网页教学网站长的经验,有时克隆版的XP系统有时是安装不了IIS的!本讲主要讲述在Dreamweaver中建立站点和连接数据库.大家请看视频教程.