首 页 网站运营 网络编程 网页制作 图象媒体 数据库 建站资源 网管专区 下载专区 最新资讯
IT学堂|红色黑客联盟
设为首页
加入收藏
联系站长
您所在的位置:首页>网络编程>ASP>文章内容
用ASP+SQL Server为网页建一道防火墙
来源: 作者: 发布时间:2007-04-12

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

一、建立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变量来对用户进行标志,在下面的页面中都进行判断。




[推荐] [返回顶部] [打印本页] [关闭窗口]
热点文章
·ASP如何获取客户端真实IP地址
·ASP实现可显示和隐藏的树型菜单
·用ASP动态生成JS的表单验证代码
·ASP:用Asp编程实现QQ的在线情况查询
·ASP:用ASP打造一个小型的网页BBS系统
·ASP:用ASP编程实现网络内容快速查找
·ASP:利用ASP把图片上传到数据库
·ASP无法更新ACCESS数据库解决方法
·如何对ASP.NET进行性能优化
·入门:防范SQL注入攻击的新办法
相关文章
·用ASP让用户访问指定页面
·磁盘ID在ASP源码防拷贝中的应用
·实现ASP文件在线发邮件
·用Delphi开发ASP分页组件
·使用ASP程序对“HTML炸弹”进行屏蔽
·如何在DataGrid控件中隐藏列
·利用 WSH 作定时工作流程
·用ASP实现对Web搜索引擎Index Server
·利用ASP生成EXECL文档
·ASP.NET数据库应用指南
文章检索
Google
相关文章
·用ASP让用户访问指定页
·磁盘ID在ASP源码防拷贝
·实现ASP文件在线发邮件
·用Delphi开发ASP分页组
·使用ASP程序对“HTML炸
·如何在DataGrid控件中隐
·利用 WSH 作定时工作流
·用ASP实现对Web搜索引擎
·利用ASP生成EXECL文档
·ASP.NET数据库应用指南
·TreeView节点互斥,autop
·利用ASP存取各种常用类
·javascript+xml实现二级
·利用ASP存取各种常用类
·Javascript实例教程(13)