网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.处理驱动器和文件夹.
.asp实现关键词获取(各搜索引擎,g.
.asp中通过getrows实现数据库记录.
.防护手册:如何防止ASP木马在服务.
.怎样在网站上连接ORACLE数据库.
.远程连接access数据库的方法.
.一点ASP问题、差错和个人心得.
.使用split分割多字符的字符串的方.
.加密QueryString数据.
.VisualInterDev6.0七种实现分页显.
.检测IP地址是否真正合法的函数.
.Microsoft VBscript运行时错误'8.
.ASP编程中15个非常有用的例子(一.
.一个查看ASP的JavaScript程序.
.实现让每句话的头一个字母都大写.
.Access与Sql Server之ASP代码比较.
.长文章分页显示思路及页码条显示.
.提高ASP性能的最佳选择(二).
.提高ASP性能的最佳选择(续四).
.使用Session记录页面地址和实现页.

开发连接远程SQL Server 的ASP程序应注意的问题

发表日期:2000-10-31


Microsoft SQL Server7.0是一种大型、分布式数据库系统,也可被认为是一种大型、分布式数据仓库。由于其与
Windows NT和BackOffice以及Visual Studio具有紧密的配合,已被越来越多的网络应用系统所采用。而ASP程序也以其和
NT的紧密连接,可使用ActiveX对象、CGI接口对象化等特点向CGI程序发起了有力的挑战。下面,就谈谈开发连接远程SQL
Server 的ASP程序应注意的几个问题。
  SQL Server是一个十分注重安全性的数据库,特别是在7.0版本发布以后,可以将数据库的许可直接授予Windows NT用
户,数据库角色也可以包括NT 用户或组及SQL Server旧版本的用户和角色。另外,结合Microsoft Proxy Server ,则必
须通过代理服务器才能在Internet 上访问SQL Server,这样更确保了数据的安全。
   在连接方案上,可选择TCP/IP套接字和命名管道的方法访问。具有NT用户帐号的用户适合于采用命名管道的方法,没
有NT用户帐号的用户则不适合用此方法.。这是因为在建立连接之前,数据库用户必须被NT确认,而选择TCP/IP套接字的连
接则无此限制,该连接可直接连到数据库服务器,不必通过使用命名管道的中间计算机,只要通过了SQL Server确认用户
就可获得访问权。

  由于是编写数据库连接的ASP应用程序,采用的数据访问编程模式当然是ADO啦!在ADO以前的数据访问编程模式有数据
访问对象DAO和远程访问对象RDO,RDODAO都是在ODBC下开发的,ODBC是用C语言编写的基于SQL的桌面规程。相反,ADO是在
一种新型的规程OLE
DB下开发的,OLE DB可以被看作是OLE技术在数据库中应用。它是基于C++开发的,给ODBC的功能提供了标准化的COM接
口。C++是面向对象的,因此ADO也具有面向对象的特性。并能通过一系列COM接口来扩展自己。这一点对于ASP程序来说,
实在是太重要了。我们知道ASP程序使用的VBScript脚本语言的功能是很弱的,若要扩充VBScript的能力,使其能访问数
据,则必须创建一个服务器端组件,通过COM接口来访问数据,而这正是ADO所擅长的。

  在编程连接网络上指定的服务器和数据库时,还必须在Web服务器上创建数据源名(DSN)。要设置一个DSN,必须给服
务器提供数据库的名字、通信所用的ODBC驱动、以及在网络中的地址。要注意的是:只有设置的DSN为一个系统DSN,才能
让ADO在ASP中正常工作。如何确定DSN是系统DSN而不是用户或文件DSN呢?很简单,只有对于NT服务器上的所有用户和服务
都可以访问的DSN才是系统DSN。
  设置SQL
  SERVER的DSN很简单,只须在有IIS或PWS的机器上启动“控制面板”的“ODBC”,在“ODBC数据源管理员”对话框中选
取“系统数据源名称”选项后,选取“SQL SERVER”即可。若无“SQL SERVER”,则先添加,再选取即可。这样,即使我
们要变更数据库,也不必修改程序中的ODBC参数,只需重新设置系统的DSN即可。
  设计ASP程序连接SQL SERVER的另一个重要问题是实现对SQL SERVER的存取控制。由于在关系型数据库中,DBMS本身的
DCL语言只支持对表和字段的存取控制,而不直接支持对表中记录提供安全性保护。为实现其安全性,同时又不失B/S结构
的开放性,可以考虑采用使用中间层存取程序逻辑结合触发器的方式来实现。使用中间层存取程序即用户端程序不直接访
问DBMS,而是通过一个中间层的存取程序。以网上BBS应用于为例,用户查询时,存取程序把表中的全部记录返回给用户;
用户插入记录时,存取程序在新记录的User_name字段填写当前用户名,表明记录的主人,当用户删除和修改记录时,存取
程序根据User_name字段向用户返回只属于他自己的记录,并允许用户从自己的记录中选择进行操作。使用触发器的方式则
是所有用户直接访问表,但在表上建立如下的触发器:

CREATE TRIGGER trigger_1 on table_ 1 FOR INSERT AS
BEGIN
IF EXITS(SELECT * FROM inserted WHERE User_name<>User_name())
BEGIN
ROLLBACK TRANSACTION
RAISERROR('请输入正确的用户名',16,-1)
END
END
CREATE TRIGGER trigger_2 on table_1 FOR UPDATE,DELETE AS
BEGIN
IF EXITS (SELECT * FROM deleted WHERE User_name<>User_name())
BEGIN
RAISERROR('你不能修改他人的数据',16,-1)
END
END


  在上面的程序中,trigger_1对于用户名不正确的用户的插入请求予以否决。trigger_2对于试图修改他人的记录的请
示予以否决。由于触发器附着在SQL Server的基本表中,无论用户通过何种方式更新记录,都无法跳过触发器的检查,因
此使用触发器实现的安全性是相当高的。但由于在表中只能定义针对手稿删除和修改的触发器,不能定义针对查询的触发
器,因此,要实现对查询的存取控制,则要通过中间层存取程序,只有向用户查询请示返回特定条件的记录来实现。

上一篇:如何在Web页面中集成文件上传功能 人气:13851
下一篇:ASP服务器组件编程心得 人气:12369
浏览全部的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐