分析基于ASP.NET的Web网络应用程序开发的平安策略实践

 

摘要摘要:Web网络应用开发中,平安性是要考虑的关键新问题,本文通过开发系统实践,从系统规划阶段、设计开发阶段、发布运行阶段三个方面具体阐述平安策略的实现,总结出如何充分利用ASP.NET的平安机制、数据库平安控制、增强管理员网络平安防范意识,构建一个性能平安的Web应用程序。
摘要:Web应用程序;web.config;认证和授权;视图;存储过程

1 前言

微软公司推出的ASP.NET,可以非常方便和高效地规划、设计、开发和发布Web网络应用程序。笔者利用ASP.NET为新疆职工培训中心开发了运行在校园网上的网络办公管理系统。该系统分为管理部门和教学部门两个角色,实现了数据存储、浏览查询和教学分析统计功能,提高了培训中心的信息化管理和校园网的利用价值。在整个系统的开发过程中,考虑最多的就是平安新问题,相信这也是所有开发人员开发Web网络应用程序所必须面对的新问题。因此本文针对基于ASP.NET的Web网络应用程序开发的平安新问题,以我们开发的系统为例,从3个方面来阐述实际解决策略摘要:
(1)系统规划阶段的平安策略;
(2)设计开发阶段的平安策略;
(3)发布运行阶段的平安策略。
希望我们的实践能对利用ASP.NET开发Web网络应用程序的相关技术人员提供参考和借鉴。

2 平安策略实践

2.1系统规划阶段
Web网络应用程序,就是运行在Web应用服务器上的一个虚拟目录及其子目录下的所有文件、网页、模块以及可执行代码的总和。根据系统需求分析,用户分为管理部和教学部(对数据的操作权限有区分),因此建立两个目录分别存放相应的网页文件。另外,还有数据库文件夹、样式文件夹、网页模版文件夹等。而对数据库表的操作文件放在非凡的文件夹bin下,因为该目录是禁止任何浏览器访问的,从而避免了远程客户下载代码的可能性。应用程序根目录下除了上述目录外,还有两个重要的应用程序级文件摘要:global.asax 和web.config(下文具体分析)。总之,文件目录的规划是按类别存放文件,重要文件存在bin目录下。
2.2设计开发阶段
主要从后台的数据库设计、配置文件web.config及前台界面设计三个内容,着重阐述对平安新问题的解决策略。
2.2.1数据库设计
为了提高访问数据的效率和平安性,能在后台做的事情,就在后台完成,能分开独立做的事情,就分开独立实现。
(1)充分利用后台数据库系统的视图和存储过程,如摘要:创建带参数的视图,实现不同角色身份的用户对各自权限范围内的数据访问。
(2)报表设计及实现摘要:Web应用程序实现动态报表,开始考虑用ASP.NET的数据控件Repeater,可以自由定义灵活的显示方式,但通常比较麻烦,而且在代码中字段名要出现,即摘要:使用数据容器Container.DataItem("字段名")方式来显示数据内容,降低了数据平安性。我们的做法是利用Bussiness Object 公司开发的专业报表软件CrystalReports10设计报表,通过ODBC数据源和数据库连接,生成报表文件(*.rpt)后,在前台利用报表控件CrystalReprotViewer,将报表文件加载到页面实现各种报表。这种把数据源、报表文件、和页面显示文件分开独立实现,不仅丰富了报表显示样式和提高了网络报表生成效率,而且极大地提高了访问数据的平安性。
(3)用户口令存储新问题摘要:不要将实际的口令存储在数据库表中,因为口令直接放在数据库或文件中存在平安隐患,因此要存储加密后的口令。使用时,例如当用户登录时,对口令加密,然后和数据库中存放的加密口令进行比较。实现步骤如下摘要:
首先,导入命名空间摘要:%26lt;%@ Import Namespace="System.Web.Security" %%26gt;
其次,编写加密函数EncrytPwd摘要:
Function EncrytPwd(Pwd as String,PwdFormat as String)
If PwdFormat="MD5" then
'下面一行得到用MD5算法加密后的字符串
EncrytPwd=FormsAuthentication.HashPasswordForStoringInConfigFile(Pwd,"MD5")
'下面一行得到用SHA1算法加密后的字符串
Else if PwdFormat="SHA1"then
EncrytPwd=FormsAuthentication.HashPasswordForStoringInConfigFile(Pwd,"SHA1")
End if
End Function
2.2.2 配置文件web.config 的平安设置
web.config文件是一个简单的XML文件,专门用于为应用程序配置系统设定、平安性设定、应用程序设定和会话设定。下面分5个内容介绍平安实践策略。
(1) 数据库连接字符串常量摘要:Web应用程序网页要大量用到数据库连接,为了提高程序平安性、通用性和可移植性,在配置文件中设置数据库连接字符串常量是很好的方法,在应用程序的web.config文件中添加如下语句摘要:

网页文件使用时,用下列代码实现数据库连接摘要:
Dim strConn As String
strConn=ConfigurationSettings.AppSettings("sqlconntion ")'获取数据库连接字符串
(2) 认证和授权摘要:HTML表单验证(Forms Authentication),是向开发人员提供确认客户凭证并控制访问权限的技术。在应用程序的web.config文件中添加如下语句摘要:

授权摘要:就是让用户拥有有效凭证,答应或拒绝访问Web应用程序。在web.config中添加如下语句摘要:

(3) 虚拟路径的设置摘要:不同用户对不同目录访问权限不同,可以设定虚拟目录来实现

(4) 设置调试模式提高平安策略摘要:默认情况下,错误信息保存在栈中。假如开启调试模式,ASP.NET在运行中发生错误时,会显示错误行号,方便调试。可以在页面或web.config文件中开启调试模式。例如摘要:

%26lt;%@ page debug=”true” %%26gt;'开启页面级调试模式

'开启应用程序级调试模式
但发布程序时,要禁用调试模式,否则出错时,有泄露后台代码的隐患。
(5) 页面出错处理策略摘要:出错时转向统一的出错页面,而不必在每个网页中写代码,控制转向出错页面,避免了程序运行期间任何未处理的意外发生时,错误页面代码泄露或使用户不知所云的尴尬发生。页面出错处理可以应用下列策略实现摘要:


(A)定制出错网页

这个设置可以保证当错误出现时,本地用户访问默认出错页,远程用户访问自定义的error.htm网页。
(B)处理非凡的HTTP请求
对于HTTP错误状态代码,例如摘要:403禁止,404无法找到,500服务器错误等,可以自定义各自的出错处理页面。如下所示摘要:



2.2.3 界面设计摘要:代码分离和自定义控件
(1)代码分离摘要:将程序代码和HTML内容分离,不仅能增强页面的条理性、易读性和团队开发的轻易程度,更重要提高网页平安性。如摘要:
前台aspx网页摘要:peixun_base_
xiangmu//
%26lt;%@ Register TagPrefix= "iewc" Namespace="Microsoft.Web.UI.WebControls"
Assembly="microsoft.web.ui.webcontrols" %%26gt;
%26lt;%@ Page Language="vb" AutoEventWireup="false" Codebehind=
"peixun_base_xiangmu/.vb"Inherits="pxb.MUTI"%%26gt;
而后台的peixun_base_xiangmu/.vb文件,专门编写代码,实现代码和HTML内容分离。
(2)自定义控件摘要:可以根据需要编写自定义控件,更好地提供可重用的封装逻辑,在使用自定义控件前,需要将定义它们的类文件编译成动态库,即摘要:
vbc /t摘要:library /r摘要:system.dll /r摘要:system.web.dll/out摘要:pxbcontrols.dll control.vb
将编写好的类文件(.vb)编译成动态库(.dll),可以供以后多次使用,由于封装了逻辑,且生成库,所以平安性得到保障。
除上述外,必须要重视记录日志。日志文件分系统日志和用户自定义日志。系统日志,如建立数据库日志文件;自定义日志文件摘要:可以利用global.asax文件的session_onStart()事件和session_onEnd()事件实现自定义日志文件维护,例如摘要:记录访问用户的登录名,访问时间,IP地址等信息,在应用程序根目录的global.asax文件内添加如下代码摘要:
%26lt;%@ Import Namespace= "System.IO"%%26gt;
Sub Session_onStart(Sender As Object, E As EventArgs)
'每一位客户登录时触发该事件
sw=New StreamWriter(server.mappath("log/log.txt"),True,Encoding.Default)
'将客户IP保存到Session中
Session("IP")= Request.ServerVariables("REMOTE_ADDR") sw.Writeline(Now() %26amp; "-用户" %26amp; Session("IP") %26amp; "进入")
sw.Close
End Sub
Sub Session_OnEnd(Sender As Object, E As EventArgs)
'当每一位客户超过会话时间没有和服务器交互,或关闭浏览器后触发该事件
sw=New StreamWriter(server.mappath("log/log.txt "),True,Encoding.Default)
sw.Writeline(Now() %26amp; "-用户" %26amp;Session("IP") %26amp; "退出")
sw.Close
End Sub
2.3 发布运行阶段摘要:主要考虑如下方面
(1) 关闭调试模式;
(2) 备份转储数据库文件和日志文件;
(3) 密码要不断更新;
(4) 及时打补丁程序。

3总结

综上所述,基于ASP.NET的Web网络应用程序开发,在充分利用ASP.NET的平安机制、数据库平安控制、管理员网络平安防范意识的基础上,可以极大提高Web应用程序的平安性能。

参考文献
[1 [美Steven A.Smith等.用实例学ASP.NET.马燕,闫立军等,译.北京摘要:电子工业出版社,2002.
[2 [美Macro Bellinaso Kevin Hoffman.ASP.NET Web站点高级编程.康博,译.北京摘要:清华大学出版社,2002.
[3 [美John Kauffman 等. ASP.NET数据库入门经典. 康博,译.北京摘要:清华大学出版社,2002.
[4 章立民. 用实例学 Crystal Report for Visual Studio.NET.北京摘要:电子工业出版社,2004.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Visual Studio 2022是微软推出的一款集成开发环境(IDE),用于开发各种类型的应用程序,括ASP.NET Web应用程序ASP.NET是一种用于构建Web应用程序开发框架,它提供了丰富的工具和功能,使开发人员能够快速构建强大的Web应用程序。 在Visual Studio 2022中创建ASP.NET Web应用程序非常简单。您可以按照以下步骤进行操作: 1. 打开Visual Studio 2022,并选择“创建新项目”。 2. 在“创建新项目”对话框中,选择“ASP.NET Web应用程序”模板,并点击“下一步”。 3. 在“项目设置”页面上,选择一个合适的名称和位置,并选择要使用的.NET框架版本。您可以选择使用空白模板或者预定义的模板,如MVC(Model-View-Controller)或Web API等。点击“下一步”。 4. 在“身份验证”页面上,选择是否需要身份验证功能,并根据需要进行配置。点击“下一步”。 5. 在“创建”页面上,确认您的设置,并点击“创建”按钮。 6. Visual Studio 2022将自动生成一个基本的ASP.NET Web应用程序项目结构,包括默认的页面、控制器、视图和其他必要的文件。 7. 您可以根据需要添加新的页面、控制器、模型和其他组件来扩展和定制您的应用程序。 通过Visual Studio 2022,您可以使用强大的调试工具、可视化设计器和丰富的代码编辑功能来开发ASP.NET Web应用程序。您还可以使用NuGet包管理器来添加第三方库和组件,以增强您的应用程序的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值