本文介绍了用ASP.NET设计网页时提高网络安全性的几种编程方法,对预防Internet攻击和ASP.NET开发动态网站有一定的指导作用。

    ASP.NET是目前非常流行和重要的开发工具之一。ASP.NET是基于Windows NT 和 Microsoft IIS 上的开放式的Web服务器应用程序开发技术。ASP.NET支持应用程序的实时更新。客户浏览器采用按页浏览的工作方式,而且各个页面文件有相对的独立性,只要用户知道了某个页面文件的URL,即直接浏览该网页,这会给某些Web应用系统带来麻烦和混乱。因此,在设计页面时,必须注意应用系统的安全性,这是网站稳定、安全、高效运行的基础。这就要求在用ASP.NET编程时应当采用适当的安全措施以保证Web网站的安全。下面介绍在ASP.NET编程时的几项安全措施。

1 设计用户登录验证

     很多ASP.NET应用程序,对页面的访问是与客户的身份息息相关的。有时设计用户登录是应用程序本身的需要,比如,对于网上购物系统来说,如客户没有输入自己的用户名就购物,那么公司就不知把货物发往何处。从安全角度来说,在设计网站时,常常需要对网站应用程序做分级处理:拒绝非法用户的登录,限定一般用户只能浏览内容,注册用户可以修改网站的部分数据,而系统管理员则可以修改网站的所有数据。

设计用户登录验证是最基本的安全措施。通常合法的用户名和口令存储在服务器端的数据库表中,当浏览器访问系统登录页面时,要求用户输入用户名和口令,然后调用验证页面,将用户输入的用户名和口令在表中查找,若找到表明是合法用户,允许访问下一页,否则认为是非法用户,拒绝访问。同时系统管理员通过对数据库表的访问来实现对用户的管理,如用户的添加、权限的变更及口令的更改等。

2 使用ServerVariables数据集合

     ServerVariables集合保存了随HTTP请求一起传送的HTTP头的信息,可以通过它获取有关浏览器的信息。语法为:Request.ServerVariables(“服务器环境变量”) ServerVariables集合中包含的环境变量很多,如、PATH_INFO、ALL_HTTP、REMOTE_ADDR、REMOTE_HOST、HTTP_REFERER等等。使用Request.ServerVariables,我们可以完成很多安全性方面的功能。这里仅举2例:

(1) 限定访问用户的IP地址

     Request.ServerVariables(“REMOTE_HOST”)获取用户的IP地址。通过判断用户IP地址。利用这个特性,可以允许或拒绝某些用户访问页面。只需在Page_Load事件中添加下面代码:

‘如果用户来自非指定地址,,则拒绝其访问本页

If Request.ServerVariables(“REMOTE_HOST”)<>“172.16.6.30”then

Response.Redirect("End.aspx")

End IF

(2) 指定跳转页面的路径

     在Web网站中为了防止盗链或直接跳过身份验证页面访问指定页。可以利用ASP.NET的Request_ServerVariables(“HTTP_REFERER”)来限定对页面的跳转访问,即使是从收藏夹链接、单击“主页”或自定义的地址都无法访问指定页面。HTTP_REFERER指的是当前网页的“父页”,即当前网页是由HTTP_REFERER所指定的IP地址跳转过来的。

为说明HTTP_REFERER环境变量的应用,下面举一个简单的例子:所有ASP.NET页面文件放在同一个虚拟目录下,如:http://172.16.6.30/Test。

首先创建一个登录页login.aspx作为注册的入口,注册成功则可以进入目录下的其它文件。点击登录按钮执行如下代码:

′判断帐号和密码是否正确

if   Name.Text=“system” and Pass=“12345” then

Response.redirect(“home.aspx”)

End If

最后在位于该虚拟目录http://172.16.6.30/Test下的所有页面Page_Load事件中添加如下代码:

Dim Str as String

Str= Request.ServerVariables("HTTP_REFERER")

If InStr(1,Str,"http://172.16.6.30/Test/login.aspx",1) = 0 Then

Response.Redirect("login.aspx")

End If

     需要注意的是,采用这种方法,当前目录下的所页面的Page_Load事件中都要包含以上代码,否则不包含此代码的文件将会在直接输入链接地址或不需输入密码就可直接进入。

3使用Session对象

     在ASP.NET中Session对象由System.Web.SessionState类实现,属于System.Web命名空间。利用Session对象可以方便记录客户的信息。从而可以防止用户非法登录指定的Web页面。

通常在登录页面用Session保存用户的帐号和密码,当访问者试图导航到另一个页面时可通过判断Session变量的值来确定进行的操作。例:在登录页面中保存Session(“ID”)=“Admin”,在其它页面中的Page_Load事件中进行如下判断

‘通过判断Session(“ID”)变量的值来确定指向的页面

if Session(“ID”)=“Admin” then

Response.Redirect("Admin.aspx")

Else

Response.Redirect("user.aspx")

End IF

     这样可以有效的防止非法用户访问指定的Web页。

以上分析了在ASP.NET设计动态网页时,实现WEB站点安全的几种方法,对用ASP.NET开发动态网站有一定的指导作用。其实,对于Web站点的安全性,还应该对Web服务器进行设置和管理,如设置用户帐号、密码、权限,设置IP地址限制等,以限制对系统的非法入侵,保证站点的安全。