`
hududanyzd
  • 浏览: 778440 次
文章分类
社区版块
存档分类
最新评论

ASP网页访问权的控制

 
阅读更多

   在浏览器/服务器应用中,如果允许客户使用浏览器通过匿名身份访问网页,那么进一步限制客户访问具体的网页通常要客户表明身份(例如提示登陆),在网页初始部分验证客户的身份,如果通过身份验证,则可浏览到网页的具体内容,否则提示访问受到限制。

   一般的浏览器/服务器应用应有一个主页,其上有进入不同网页的超链接。在Active Server Page应用中,我们知道,可以在进入主页时进行一次登录,把登录成功信息保存会话变量中,然后在进入该应用的其它网页时,只需检验这个会话变量,无需再做登陆验证。通常的做法是在每个网页的开始部分检验客户是否登录过,如果没有登录,转入登陆页完成登陆;如果登陆过,则显示网页内容。扩展这种检查,可以进一步检查不同的客户能否访问网页内容,如果无权访问,给出提示。不过这种在进入到具体的网页后才验证身份,对于无权访问该网页的客户来说就有一种进入死胡同的感觉。如果能够在超链接点击时即给予无权访问的提示,并且保持超链接不向下进入,可以给客户一个更好的印象。

   要做到这一点,首先要限制客户直接在地址栏输入受限网页的名字进入,保证客户从一公共入口网页(比如主页)进入,然后在链接受限网页的公共入口网页页上根据客户身份来确定他能否进入即可。限制的方法是设立一个网页可进入标志。如果客户从公共网页上进入,在公共网页上设立允许标志,在每个受限网页的开始部分检查这个标志,如果标志为不允许,说明客户企图直接在地址栏输入网页的名字进入,提示访问受限,不显示内容或转入登录网页。

   另一项工作是在公共网页上检查其上的受限网页的超链接,如果允许客户进入,在进入受限网页检查完进入标志后,立即清除允许标志;如果不允许进入,点击超链接时给予提示。下面是源代码。

   以下文件为受限网页,取名为page1.asp

< %@ Language=VBScript % >
< % if not Session("fromdefaultpage")
then //检查进入标志
Response.Write "不是从公共网页进入,不能浏览本页内容。"
Response.end
else
Session("fromdefaultpage")=false
//取消允许进入
end if
% >
< HTML >
< HEAD >
< META NAME="GENERATOR"
Content="Microsoft Visual Studio 6.0" >
< /HEAD >
< BODY >

< P >这是本页的正常内容。< /P >

< /BODY >
< /HTML >

以下文件为公共入口网页,取名为page.asp

< < %@ Language=VBScript % >

< % dim conn,rs,acl
set conn=Server.CreateObject("ADODB.Connection")
ConnectionString = "DSN=mssql;Description
=Microsoft SQL Server 7.0; SERVER=wwwserver;
UID=ddy;APP=vi6;WSID=WANGPUQUAN;DATABASE=webapp"
conn.ConnectionTimeout = 30
conn.Mode = 3
conn.Open Connectionstring,"ddy","2louddy"
set rs=conn.Execute ("select acl from
userlist where username='u1'")
if not rs.EOF then
acl=rs(0)
end if
set rs=nothing
set conn=nothing
session("fromdefaultpage")=true % >

< HTML >
< HEAD >
< META NAME="GENERATOR"
Content="Microsoft Visual Studio 6.0" >
< script language=javascript >
function checkright()
{
var curElement=event.srcElement
if ("A"==curElement.tagName)
{
var ss="< % =acl % >"
var re=new RegExp(","+curElement.id+",","i")
if (ss.search(re) >=0)
{
alert("由于权限不足,不能访问此页!")
return false
}
else
{ return true }
}
}
< /script >
< /HEAD >

< BODY onclick="return checkright()" >
< p >这是公共入口页,在点击文档内容区时,
文档的onclick事件将检查点击的是否超链接,
如果是,将进一步检查其id是否在禁止访问的列表(,page1,page2,page3,)
中,如果在列表中,提示访问受限,不许进入;
如果不在列表中?佇斫搿?lt; /p >
< P >< a id=page1 href= Page1.asp >
为了限制page1.asp被访问,此处设定id为page1,
点击此超链接不能进入 < /a >< /P >
< P >< a id=page5 href= Page1.asp >
如果不限制page1.asp环梦剩瓒╥d为page0,
点击此超链接可以进入 < /a >< /P >

< /BODY >
< /HTML >
   page.asp的说明:
   一、 为了节省篇幅,此文省略了登录网页,查询访问权限时使用了名为u1的用户名。

   二、 用户权限数据库表结构如下:

   字段名 字段类型 字段描述
   username char(10) 用户名
   password char(10) 口令
   acl varchar(1800) 禁止访问列表
   三、 acl字段中保存禁止访问的ID列表,此例中对应用户u1的acl值为",page1,page2,page3,"。
   四、 为了便于管理,可以把ID取作禁止访问的网页的文件名,超链接标记的ID与引用的网页文件名相同即可。此例中为简便起见,两个超链接引用了相同的网页,但分配了不同的ID值,其中page1在禁止访问列表中,因而不可访问,page0不在禁止访问列表中。

   此例中是在每次进入公共入口页中查找访问控制列表,这样做的代价是频繁访问数据库。实际上可以在首次访问该页时把取出的acl值保存在会话变量中,在会话结束前再次访问只需访问会话变量即可,不过这样做在用户较多时服务器需要较多的内存来保存这些变量。可以视实际情况决定使用那一种方法。

分享到:
评论

相关推荐

    asp.net知识库

    为ASP.NET封装的SQL数据库访问类 DataTable.Select方法的性能问题 .NET 2.0里使用强类型数据创建多层应用 ADO.NET实用经验无保留曝光 有了System.Data.IDataReader,一切皆成数据 理解DataSet的数据缓存机制 存储过程...

    ASP对象全接触资料集

    | | ├────────ASP 中如何调用ocx控件.txt | | ├────────ASP 内建对象.txt | | ├────────aspdoc.chm | | ├────────ASP内置对象.txt | | ├────────SDK文档.txt | |...

    Webshell提权-漏洞银行大咖面对面-危险漫步

    黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。

    YomComic在线漫画管理系统 v1.0 Beta.rar

    YomComic V1.0 Beta 使用Asp.Net 3.5(VS2008)开发,数据库目前仅使用 SQL Server 2005 本系统特点: ...如果您拥有服务器控制权,且服务器是IIS6,则可以开启更适合SEO的urlrouting,需要修改web.config中的

    IIS6.0 IIS,互联网信息服务

    所访问的网页文件本身加了密。比如“默认Web站点”原主目录“E:\Inetpub\wwwroot”下的首页文件“iisstart.asp”访问时就需要密码。 2.没有设置允许匿名访问或作了不应该的改动.首先应确保已勾选中了“匿名访问”这...

    服务器错误[网站https服务器内部500错误的解决方法][修改版].docx

    如果你要是觉得很烦,最简单就是选中整个存放程序的文件夹,注意是存放程序的文件夹,进行右击重复以上步骤,当选择权限时,直接选择 everyone确定后将权限设置成完全控制即可,如果你的程序是在服务器上出现权限...

    YomComic在线漫画管理系统 v1.0 Beta

    YomComic在线漫画管理系统 v1.0 Beta,该源码系统YomComic V1.0 Beta 使用Asp.Net 3.5(VS2008)开发,数据库目前仅...如果您拥有服务器控制权,且服务器是IIS6,则可以开启更适合SEO的urlrouting,需要修改web.config中的

    AspxBBS论坛 v2.5 正式版

    采用当前的热门技术ASP.Net开发,C#语言编写,一流的高速缓存利用技术,论坛风格参照了、CSDN论坛、LB论坛、动网论坛的风格,整个论坛的数据库结构设计一流,所以论坛运行速度一流,功能一流,整个论坛包括HTML码只有...

    在线考试系统文献综述

    JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上...

    SnSitesV1.0.1共享版本

    II1-1-5-2,权集添加,编辑,删除等.立体权限防护 II1-1-6,终极管理  本管理仅为方便管理人员对平台下所属域组下各大栏目的全局管理 II1-1-7,初始配置  可设置当前状态下的下一栏目下的配置信息; II1-1-8,自动...

    网上书店系统源码

    【摘要】本文首先介绍了课题所涉及的相关技术:多层用户/服务器结构以及Web应用的相关数据库访问技术,ASP技术。在次基础上论述了网上书店系统的设计目标、系统需求和总体设计方案,较详细的论述了网上书店系统的详细...

    jQuery权威指南-源代码

    此外,他还是微软技术方面的专家,精通C#、ASP.NET 和SQL Server等技术,出版相关著作多部。 媒体推荐: jQuery的发展之迅速和取得的成功之巨大是其他所有开发框架都难以企及的,它已经成为Web开发者必备的核心...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    ASP只是一个一般的引擎,具有支持多种语言的能力,不过默认的并且是最常用的还是VBScript。 mod_perl与Perl一样强大,只是更快一些。 二、PHP入门 PHP站点的在线教程已经很棒了。在那里还有一些其他教程的链接。...

Global site tag (gtag.js) - Google Analytics