辛苦苦做出来的网页,有时想要限定别人的访问,有时也是出于安全的考虑,需要加上一定的限制,防止网页被任何人浏览。这里介绍几种比较简单的技术来实现。
一、利用ASP的一个对象来完成对局域网内、外用户的过滤。
在WEB应用的过程中,一般要对内外用户加以区别,如果是本网内的用户则顺利过关,如果是外用户,则要求要输入口令才能合法。在ASP中有一个REQUEST对象,它具有一个serverVariables属性,可以获得环境变量的值。方法是:request.serverVariables(variable),其中variable表示环境变量的名称,如:服务器主机名称,WEB服务器软件名等等。如为“REMOTE_ADDR”则表示访问者的IP地址。我们通过它就可以实现IP地址的提取,比而达到过滤的作用。
lw.asp
网页保护
<%
'使用REQUEST.serverVariables("REMOTE_ADDR")获得IP地址并保存在变量ADDR中
addr=request.serverVariables("REMOTE_ADDR")
saddr=cstr(addr)
'取IP地址的第三段值并存入SADDR中
for i=1 to 2
saddr=right(saddr,len(saddr)-instr(1,saddr,"."))
next
saddr=left(saddr,instr(1,saddr,".")-1)
'判定处理如果IP不是本单位的IP地址则要求输入 外单位的密码例PASSWORD如果是本单位的用户则pass 通过0
if (left(addr,5)<>"26.60" or saddr<"241" or saddr>"244")and request("passwd")<>"password" then
%>
对不起!你的IP是<%=addr%>, 本页面可由26.60.241.* to 26.60.244.*的用户直接访问,请你输入外单位访问密码
<% else%>
合格用户pass
<%end if %>
二、利用服务器上的密码库,完成对网页的密级访问。
这里采用SQL2000数据库,其中建立一个表,结构如下:
/*建立人员密码表PersonSecretCode*/
CREATE TABLE PersonSecretCode
(Person_ID varchar(10) not null, /*人员代号*/
Person_unit varchar(50) null, /*人员所在单位*/
SecretCode varchar(50) null, /*密码*/
secretprior varchar(5) not null , /*密码级别1代表秘密2代表机密3代表绝密*/
notes text null)
方法是:利用一个登录网页,让用户首先输入用户名及密码,通过服务器来判定是否有本用户及密码是否正确,如不正确则提示重新输入,如果正确,则给几个SESSION变量赋值,其中有一个密级变量,然后进入要执行的网页。在执行网页中利用IF语句判定密级,如果密级正确就进入,否则提示用户重新登录,更换高级密码。
logon.htm
Untitled Document
’提交用户名及密码的表单
logon.asp
<%@LANGUAGE="VBSCRIPT"%>
’建立一个数据库的联结
<%
Dim Recordset1__MMColParam
Recordset1__MMColParam = ""
if (Request.Form("use_name") <> "") then Recordset1__MMColParam = Request.Form("use_name")
%>
<%
‘产生一个记录集,用以判定密码的正误
set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_CONN1_STRING
Recordset1.Source = "SELECT Person_ID, Person_unit, SecretCode, FingerPrint, secretprior, notes FROM dbo.PersonSecretCode WHERE Person_ID = '" + Replace(Recordset1__MMColParam, "'", "''") + "'"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 3
Recordset1.Open()
Recordset1_numRows = 0
%>
Untitled Document
<%
if Recordset1.eof=true then %>
’没有此用户
<%="no no no user"%>
<%response.redirect "logon_1.htm"%>
<%end if%>
<%if Request.Form("secretcode")<>(Recordset1.Fields.Item("SecretCode").value) then
%>
‘密码不正确
<%="no no secretcode "%>
<%response.redirect "logon_2.htm"%>
<%end if%>
’用户名及密级送入SESSION变量
<%session("person_id")=(Recordset1.Fields.Item("Person_ID").value)
session("secretprior")=(Recordset1.Fields.Item("secretprior").value)
response.write session("secretprior")
response.redirect "default.asp"
%>
<%
Recordset1.Close()
%>
file1.inc
‘判定密级
<%if (session("person_id")<>"") and (session("secretprior")="3" or session("secretprior")="2" or session("secretprior")="1") then
session("pass")= "ok"
else
response.redirect "logon.htm"
End if %>
在default.asp中利用把file1.inc包括进来即可。
三、前面讲的都是基于ASP技术的保护,要有服务器端来支持,而对于提供个人免费主页的网站,一般不为个人用户提供这些服务,但我们可以利用javascript来实现客户端对网页的加密保护。方法如下:
网页被加载时,首先出现提示框,要求用户输入允许登录的密码,正确即可登录进入主页,否则无法进入个人网页。