快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

用ASP+SQL SERVER为网页建一道防火墙

  为网页设置防火墙的主要目的是根据网页内容对不同来访者提供不同的服务,利用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.?持帘0.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变量来对用户进行标志,在下面的页面中都进行判定。
返回类别: 教程
上一教程: 将你的网站设置为客户的信任站点--WSH方案
下一教程: 服务器端改XML冲突的解决方式讨论

您可以阅读与"用ASP+SQL SERVER为网页建一道防火墙"相关的教程:
· ASP+SQL Server构建网页防火墙
· 在ASP中ACCESS与SQL SERVER查询的不同
· 利用SQLSERVER存储过程实现ASP用户身份验证
· 用ASP治理SQL SERVER数据库
· 利用SQL SERVER存储过程实现ASP用户身份验证
    微笑服务 优质保证 索取样品