ASP中简易用户访问控制(2)

    使用Session变量的问题
         虽然Session变量是简单易用的,而且比其他方法要安全,但还是有一些问题。首先,只有访问者的浏览器支持cookie时,Session变量才能正常工作。尽管现在大多数浏览器都支持cookie,但是记住访问者可以拒绝使用它(这依赖于浏览器的安全设置)。
         其次,特别在IIS4中,当浏览器请求多个页面时,Session变量可能被半途丢失。通常,遵循下面三个简单原则可以将这个漏洞减少到最小:
         ○ 只使用一个global.asa文件,放置在站点的根目录下。附带多个global.asa的嵌套应用程序,可能导致session变量使用越界。
         ○ 确认IUSE帐号或者它所属的组对global.asa文件至少有读的权限,并且IIS拥有Anonymous访问权限。
         ○ 要确认在所有页面中你都使用同样的字符大小写格式。Netscape(以及其他浏览器)对于/ThisFolder/ThisFile.asp 和 /thisfolder/thisfile.asp 这两个链接是当作在两个不同目录下的两个不同文件看待的。所以当从页面中取回一个cookie时,可能会因为大小写问题发生错误。
在数据库中保存登录信息
        如果需要跟踪大量访问者的信息,仅仅使用include文件的方式就会变得很难管理。这时,我们可以使用数据库。利用此技术,同样适用于运行访问者加入或者在线登记的情况,并且将他们加入用户列表。对于这个问题在此不做进一步探讨。
        使用数据库处理全部的过程是非常简单的!当用户提供了登录信息后,使用SQL的SELECT命令在数据库中查找输入的用户名,并取回匹配的口令。如果取回的口令与输入的口令一致,就允许他们进入下一步:
        strSQL = "SELECT sPassword FROM Users " _ & "WHERE sUsername = " & Request("v1") & ""
        加入登录信息的问题
        然而,加入新用户是一个小难题。如果发现用户在数据库中不存在,并且决定使用ASP自动加入他们,我们就必须注意了。换言之,当用户填写新的信息时,可能有另外的用户使用同样的用户名在做同样的事情,而且后者动作快,首先在数据库中保存了信息,这样,前者的加入工作就不能完成。
有2个显然的方法可以避免这个现象。一个方法是:自动建立一个带空口令的新记录,用户日后可以修改它:
        strSQL = "INSERT INTO Users (sUserName, sPassword) " _ & "VALUES(" & Request("v1") & ", null)" 
         一个更好的方法是:如果新记录创建成功,就使用一个过程返回一个特殊的数值(比如用户名),或者,如果不成功,返回错误信息。这样,用户就可以选择一个新的用户名。下面的例子是使用SQL Server存储过程,如果加入新记录成功,就返回用户名,如果用户名已经存在,就返回空字符串:
CREATE PROCEDURE AddUser @s_user varchar(12), @s_pword varchar (12) AS
IF EXISTS (SELECT * FROM Users WHERE sUserName = @s_user)
SELECT
ELSE
BEGIN
INSERT INTO Users (sUserName, sPassword)
VALUES(@s_user, @s_pword)
SELECT sUserName FROM Users WHERE sUsername = @s_user
END
        这样就可以在ADO中执行这个过程,并检查返回值来确认是否添加成功。如果失败,就通知用户选择一个新用户名。这里有一些代码描述了如何使用上述的存储过程,你可以从本文下载的文件中找到这些代码。
        以下是从表单中收集的数据:
strUserName = "NewUser1"
strPassword = "ThePassword"
         定义数据库连接:
strConnect = "DRIVER={SQL Server};SERVER= yourserver ; " _
& "DATABASE= yourdatabase;UID= yourusername;PWD= yourpassword ;"
建立并打开数据库连接:
Set oCon = Server.CreateObject("ADODB.Connection")
oCon.Open strConnect
建立command对象,设置属性
Set oCmd = Server.CreateObject("ADODB.Command")
oCmd.ActiveConnection = oCon our open connection
oCmd.CommandType = 4 its a stored procedure
oCmd.CommandText = "AddUser" the procedure name
提供参数执行command对象,得到结果:
Set oRs = oCmd.Execute (lngRecsAffected, Array(strUserName,strPassword))
strResult = Trim(oRs.Fields(0)) ADO may add a space to the result
显示结果,如果错误,显示“user exists warning”:
If strResult = "" Then
Response.Write "User Already Exists"
Else
Response.Write "Added new user: 〈 B 〉" & strResult & "〈 /B 〉"
End If
% 〉
 
 

时间: 2024-10-02 02:26:49

ASP中简易用户访问控制(2)的相关文章

ASP中简易用户访问控制-1

访问|控制 在站点的页面之间传递参数的通常方法是通过URL查询字符串,或者通过在表单中设置隐藏域的方法.另外的两种流行方法是使用cookie,或者使用ASP Session变量.在这篇文章里面,将讨论如何使用cookie和session变量来管理用户对站点页面的访问权限. 使用cookie来跟踪访问者跟踪访问者访问页面的传统方法是使用cookies,cookie就是存储在用户一端计算机上的一个文本文件,当用户访问相应的域时,这些文件就被送到服务器上.做为基本应用,cookie被当作用户再次访问站

ASP中简易用户访问控制(1)

在站点的页面之间传递参数的通常方法是通过URL查询字符串,或者通过在表单中设置隐藏域的方法.另外的两种流行方法是使用cookie,或者使用ASP Session变量.在这篇文章里面,将讨论如何使用cookie和session变量来管理用户对站点页面的访问权限. 使用cookie来跟踪访问者跟踪访问者访问页面的传统方法是使用cookies,cookie就是存储在用户一端计算机上的一个文本文件,当用户访问相应的域时,这些文件就被送到服务器上.做为基本应用,cookie被当作用户再次访问站点时验证和区

ASP中简易用户访问控制-2

访问|控制 使用Session变量的问题虽然Session变量是简单易用的,而且比其他方法要安全,但还是有一些问题.首先,只有访问者的浏览器支持cookie时,Session变量才能正常工作.尽管现在大多数浏览器都支持cookie,但是记住访问者可以拒绝使用它(这依赖于浏览器的安全设置).其次,特别在IIS4中,当浏览器请求多个页面时,Session变量可能被半途丢失.通常,遵循下面三个简单原则可以将这个漏洞减少到最小:○ 只使用一个global.asa文件,放置在站点的根目录下.附带多个glo

ASP中得到用户的真实IP地址

ip地址 这个是以前供职于一家电子商务网站时,由于网站的销售的都是虚拟的东西,比如说游戏充值卡 呀什么的,支持在线支付.久而久之,就免不了有很多人想要来打网站的主意,一些无聊者老是用代理上网来攻击网站,这样子就算是我们知道被人攻击了也拿对方没办法,后来发现ASP中的Request.ServerVariables("HTTP_X_FORWARDED_FOR")可以得到用户的代理IP.如果用户用了代理,那么这个值就不会为空.反之.呵呵 那么,我们就可以在网页加载时检测用户的代理IP是不是为

在ASP中过滤用户输入 提高安全性

安全|安全性|安全|安全性 安全对于所有应用程序来说都是十分重要的.一个简单应用程序里的某个失误都会造成对数据库或者其他企业资源未经授权的访问,因此安全尤其重要.一种常用的攻击方法是将命令嵌入到用户的回应里,而从用户输入里过滤掉这些非法的字符就能够防止这种攻击. 允许用户输入非法的字符会增加用户导致问题的机会.例如,很多应用程序都能够接受用户在SQL命令里增加的WHERE子句.恶意用户会通过向其输入的信息里增加额外命令的方法,来执行数据库服务器上的代码.例如,他们不是输入"Smith"

ASPX中的用户控件与ASP中的INCLUDE方法对比

include|控件     在ASP的年代里,为了避免经常性重复的劳动,对一些功能相似的区域或者代码,经常作成一个文件,然后通过连接(直接连接或者虚拟连接)的方法引入到ASP网页文件之中,对于一个很大的引用了很多ASP文件就相当于一个文件被分成了很多块,彼此文件之间的数据是可以自由共享的(除了函数之中的数据).    ASPX的用户控件就与INCLUDE有很大的不同了,它的最大特点就是在于他是以包装好的对象的形式呈现,通过我们的编程,可以将一个公用的事例抽象出来,将一些功能和方法总结出来,作成

在ASP应用中验证用户身份

    交互式的Web应用比那些只提供静态Web页面的站点要求考虑更多的安全问题.注册与密码是保护敏感信息最为常用的手段.由于ASP没有直接提供验证用户身份的方法,因此,用户必须执行登录过程以便应用系统保存和提取用户相关信息.    一.示例站点概貌    本文通过一个示例站点ASPSecurity说明ASP应用中注册与密码保护的一般实现过程.我们把用户信息保存在Web服务器上的一个Access97数据库中,DSN名称为   ASPSecurity.唯一的数据库表拥有以下字段:Signon(文本

ASP.NET中在线用户统计的简单实现及讨论

asp.net|统计|在线     统计在线用户的作用不言而喻,就是为了网站管理者可以知道当前用户的多少,然后根据用户数量来观察服务器或者程序的性能,从而可以直观的了解到网站的吸引力或者网站程序的效率.现在,我们就介绍一个简单明了的方法来统计在线用户的多少,该方法的特点就是充分的利用了ASP.NET的特点,结合global.asax文件,用Application和Session巧妙的实现在线用户的统计,由于程序中只用到一个Application,所以,程序占用系统资源几乎可以忽略不及,当然,这也

关于ASP.NET2.0 中的用户控件编程使用

asp.net|编程|控件 今天用了一下2.0中的用户控件,发现使用编程方式使用用户控件,跟1.X 中截然不同. 1.首先,要在所要使用的Page 头部声明引用.如下: <%@ Reference Control="../Controls/AlbumEditor.ascx" %> 2.在后置代码里,从"ASP"空间中就可以找到此控件的类引用了,不过还需要事例一下.-_-! 不明白设计者为什么要这么做,还不如1.1 那样直观.如下:  ASP.Contro