ASP和SQL Server如何构建网页防火墙

ASP是Web上的客户机/服务器结构的中间层,虽然它使用脚本语言(Java Script,VB Script等)编写,程序代码在服务器上运行,在客户端仅可看到由ASP输出的动态HTML文件,但ASP仍具有某些漏洞,采取一定手段也可以看到ASP程序的源码。这时,通过ASP与SQL Server相结合,我们可以设计出简单、高效、可靠的应用程序。

为网页设置防火墙的主要目的是根据网页内容对不同来访者提供不同的服务,利用Java Script或VB Script,我们很容易做到这一点。但网页的源码在客户浏览器中可以被看到,访问者可以查看所用的用户鉴别方法,这只是一个表面形式的防火墙。

下面简单介绍一下其建立过程。

一、建立Login

在SQL Server上建立访问者的Login和Password。

二、在网络服务器上创建数据库DSN

使用“控制面板”中的“ODBC数据源管理器”创建某个数据库的ODBC 数据资源名,即DSN,这样以后可以通过使用数据库DSN连接具体的数据库。

“ODBC数据源管理器”提供了三种DSN,分别为用户DSN、系统DSN和文件DSN。其中,用户DSN会把相应的配置信息保存在Windows的注册表中,但是只允许创建该DSN的登录用户使用。系统DSN同样将有关的配置信息保存在系统注册表中,但是与用户DSN不同的是系统DSN允许所有登录服务器的用户使用。

与上述两种数据库DSN不同,文件DSN把具体的配置信息保存在硬盘上的某个具体文件中。文件DSN允许所有登录服务器的用户使用,而且即使在没有任何用户登录的情况下,也可以提供对数据库DSN的访问支持。此外,因为文件DSN被保存在硬盘文件里,所以可以方便地复制到其它机器中。这样,用户可以不对系统注册表进行任何改动就可直接使用在其它机器上创建的DSN。

在以上三种数据库DSN中,建议用户选择系统DSN或文件DSN,如果用户更喜欢文件DSN的可移植性,可以通过在NT系统下设定文件的访问权限获得较高的安全保障。

建立新的DSN,用户首先选择“添加”,然后在弹出窗口中选择用户将要建立连接的数据库类型并选择列表中的“SQL Server”项。如果用户是建立文件DSN,则单击“下一步”按钮并在随后的对话框中输入所要建立的文件DSN的文件名和保存路径。如果用户建立的是系统DSN,单击“完成”按钮。

在选择完数据库之后,用户需要对数据库DSN进行设置。用户需要选择提供数据库服务的具体服务器,设定登录用户名和口令,以及用户将要连接的数据库。

三、程序设计

下面要实现的就是一个简单的页面防火墙的功能。此页面只限制本单位内部网的用户进行访问(在此假设内部网的IP地址是从10.61.96.?至10.65.97.?之间),如果是单位外部用户进行访问则要求输入访问用户名及密码。在此要使用到request对象的ServerVariables属性,通过它来获得环境变量的值。

程序源码(firewall.asp)如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>firewall.asp</title>
</head>
<body background="#800080 ">
<%
'使用Request.ServerVariables("REMOTE_ADDR")得到IP地址并保存在变量remoteip中
remoteip=Request.ServerVariables("REMOTE_ADDR")
stip=cstr(remoteip)
取得IP地址第三个段的值并保存到stip中
for i=1 to 2
stip=right(stip,len(stip)-instr(1,stip,"."))
next
stip=left(stip,instr(1,stip,".")-1)
'IP地址有效性检验及密码验证,包括两方面的内容:如果IP地址符合则通过验证;
如果IP地址不符合则检验输入的用户名、密码是否正确
if (left(remoteip,5) <> "10.61" or stip<"96" or stip>"97") then
username=request.form("t1")
password=request.form("t2")
Set fs = CreateObject("Scripting.FileSystemObject")
Set thisfile = fs.OpenTextFile("dsn.txt")
db loc=thisfile.readline
thisfile.close
cnstr=db_loc&&"uid="&&username&&";"&&"pid="&&password
on error resume next
set cn=server.createobject("adodb.connection")
cn.open cnstr
if err=3709 then %>
<p><font color="#FF0000">对不起,用户:<%=username%>没有访问权限,或密码不正确! <BR></font></p>
<form method="POST">
<p align="center">
用户名:<input type="text" name="T1" size="20">
口令:<input type="password" name="T2" size="20">
<input type="submit" value="提交" name="B1"><input type="reset" value="全部重写" name="B2">
</p>
</form>
<%end if
cn.close
set cn=nothing%>
<%else %>
恭喜您,您已经通过了验证,可以直接使用本站点的资源!
<%end if%>
</body>
</html> 

稍微修改一下上面如IP地址等信息,该程序就可以运行了。

当然,上面只是实现在一个页面中的防火墙功能。如果一个网站有多个页面的话,可以设置一个session变量来对用户进行标志,在下面的页面中都进行判断。

希望通过本文的介绍,能够给你带来帮助。

(0)

相关推荐

  • asp 在线备份与恢复sqlserver数据库的代码

    asp在线备份sql server数据库: 1.备份sqlserver 复制代码 代码如下: <% SQL="backup database 数据库名 to disk='"&Server.MapPath("backup")&"\"&"backuptext.dat"&"'" set cnn=Server.createobject("adodb.connectio

  • ASP备份SQL Server数据库改进版

    复制代码 代码如下: <form method="post" name="myform" action="?action=backupdatabase"> 选择操作:<INPUT TYPE="radio" NAME="act" id="act_backup"value="backup"><label for=act_backup>备

  • PHP的ASP防火墙

    <? $ASPservername  :  此变量必须有IP在                          /etc/hosts文件内. $ASPport        :  ASP文件服务器端口号. $ASPpath        :  在服务器端的ASP文件路径. $ASPfile        :  ASP文件名 $ASPurlredirect :  $ASP文件参数. //设置变量    $ASPservername  =  "WEB_SQLSERVER";    

  • ASP语言实现对SQL SERVER数据库的操作

    目前管理信息系统已从传统的客户机/服务器(C/S)模式转向了浏览器/服务器(B/S)模式,特别是微软公司推出它的新产品ASP语言之后,这种转变更加迅猛.管理信息系统的核心是对数据库进行包括添加.修改和查询等等操作,ASP提供的ADO数据库接口控件,使得程序员再也勿需编写复杂的CGI程序了,而只要用几句简单的语句即可实现以上操作.1.系统环境 PII 350,Ram 64M,WINNT Server 4.0, Service Pack4, IIS 4.0, SQL Server7.0. 2.系统功

  • SQL Server LocalDB 在 ASP.NET中的应用介绍

    我相信世界总是会向更好的方向发展,今年的维也纳新年音乐会没有往年的明星级指挥,但是它通过回归奥地利的本质,以更传统的聚合法则,让过往的艺术家们一代代创造的灿烂,在新的指挥手中,迸发出更深邃的音节.在此,也祝大家新年快乐.如同交响乐一样,构造软件系统不一定必须某个强大的明星驱动,我们站在历代ADO.NET的肩膀上,更好地回归到SQL Server的核心开发:SQL Server LocalDB 在 ASP.NET中的应用. 使用SQL Server LocalDB的优势: 快速部署完整的SQL S

  • ASP通过ODBC连接SQL Server 2008数据库的方法

    创建数据库连接文件[dsn文件]的方法 创建 ODBC DSN 文件 在创建数据库脚本之前,必须提供一条使 ADO 定位.标识和与数据库通讯的途径.数据库驱动程序使用 Data Source Name (DSN) 定位和标识特定的 ODBC 兼容数据库,将信息从 Web 应用程序传递给数据库.典型情况下,DSN 包含数据库配置.用户安全性和定位信息,且可以获取 Windows NT 注册表项中或文本文件的表格. 通过 ODBC,您可以选择希望创建的 DSN 的类型:用户.系统或文件.用户和系统

  • ASP 连接 SQL SERVER 2008的方法

    虽然网上有很多介绍,但是我还是费了很大的劲才连上.(要安装IIS和SQL SERVER) 新建一个*.asp文件,键入 <% set conn =server.createobject("adodb.connection") conn.open "provider=sqloledb;data source=local;uid=sa;pwd=******;database=database-name" %> 比较标准的 需要注意的是: DataServer

  • sql server中批量插入与更新两种解决方案分享(asp.net)

    若只是需要大批量插入数据使用bcp是最好的,若同时需要插入.删除.更新建议使用SqlDataAdapter我测试过有很高的效率,一般情况下这两种就满足需求了 bcp方式 复制代码 代码如下: /// <summary> /// 大批量插入数据(2000每批次) /// 已采用整体事物控制 /// </summary> /// <param name="connString">数据库链接字符串</param> /// <param n

  • ASP和SQL Server如何构建网页防火墙

    ASP是Web上的客户机/服务器结构的中间层,虽然它使用脚本语言(Java Script,VB Script等)编写,程序代码在服务器上运行,在客户端仅可看到由ASP输出的动态HTML文件,但ASP仍具有某些漏洞,采取一定手段也可以看到ASP程序的源码.这时,通过ASP与SQL Server相结合,我们可以设计出简单.高效.可靠的应用程序. 为网页设置防火墙的主要目的是根据网页内容对不同来访者提供不同的服务,利用Java Script或VB Script,我们很容易做到这一点.但网页的源码在客户

  • 用Asp备份与恢复SQL Server 数据库

    一个用asp备份与恢复SQL Server数据库的例子代码,希望对一些朋友有用.(注意:数据库使用中可能无法恢复)  复制代码 代码如下: <HTML> <HEAD><TITLE>SQL Server 数据库的备份与恢复</TITLE> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"></HEAD><B

  • ASP调用SQL SERVER存储程序

    ASP调用SQL SERVER存储程序  出处   http://www.bmj2000.com/vb/techniccolumn/subDetail.asp?MainId=2&BoardId=asp&ItemId=%CA%FD%BE%DD%BF%E2%B2%D9%D7%F7&RecId=2216 调用数据库存储过程 <%     Set Dataconn = Server.CreateObject("ADODB.Connection")      '建立

  • ASP在SQL Server 2000中新建帐号和权限

    ' 以下为在asp中增加一个sql server2000用户函数,并为建立一个数据库,给他dbo的权限 ' ****************注意:sql server的验证方式不要选仅为windows方式, ' **************** 允许远程sql server连接 ' ****************该函数已通过测试**************************** ' 有什么问题欢迎和我交流,以后会推出对sql server的一些管理操作程序 ' 参数:StrLoginNa

  • ASP.NET Sql Server安装向导(aspnet_regsql.exe)错误解决一例

    今天也自己试试用这个工具来配置一下.首先在数据库中建立了一个数据库,名称为TESTDB,然后新建了一个sqlserver的登录名(testdb),指定了testdb为TESTDB的默认数据库.然后就开始配置了. 配置过程是参考<aspnet_regsql.exe 工具注册数据库>的,但是到了选择服务器和数据库时候,填写了正确的服务器名,选择sql server身份验证,填写了新建的testdb用户名和密码,然后点选下拉框来选择目标数据库,此时出现了错误提示:(未能查询SQL Server中的数

  • SQL SERVER 中构建执行动态SQL语句的方法

    1 :普通SQL语句可以用exec执行 Select * from tableName exec('select * from tableName') exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL declare @fname varchar(20) set @fname = 'FiledName' --Select @fname from tableName

  • win2008 r2 安装sql server 2005/2008 无法连接服务器解决方法

    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. 在使用G2服务时,测试服务器连接,结果遇到这个问题. 问题详细:连接测试失败!:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (provider: 命名管道提供程序, error: 40 - 无法打开到

  • sql server不存在 sql server拒绝访问第1/3页

    最近做一个项目(Asp.net+Sql Server 2000),在原来开发的机器上运行没有任何问题.但当我在另外一台机器上调试程序(本机调试)的时候,总出现"SQL Server不存在或访问被拒绝".相信在任何一个搜索网站输入这样的检索词,一定会获得n多的页面. 总结起来的关于SQL Server连接中此类四个最常见错误错误解决方案如下: 一."SQL Server 不存在或访问被拒绝" 这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有

随机推荐