基于ASP.NET的Web应用系统安全策略分析

随着Internet的飞速发展以及Web应用系统在各行各业的广泛使用,网上银行、电子商务、BBS等各种Web应用在通过Internet实现信息互换的同时,系统安全性问题也带来了严峻的考验。目前,IIS + Asp.NET + SQL Server 作为首选开发平台能够满足Web应用系统高效、稳定和易维护等特性,但系统安全性始终都是每个阶段需要考虑的关键问题。

1.ASP.NET系统易存在的安全隐患

目前,有的Web系统开发者在软件需求分析阶段过于看重功能和效率而忽略系统整体安全性考虑,或者在程序编码过程中代码存在漏洞,没有经过安全测试就直接运行软件系统,在日后软件系统的维护和管理方面也没有采取保护措施。此外,由于ASP.NET程序采用非编译性语言,程序源代码的安全性较低,容易给攻击者提供机会,因此,需要我们从多方面采取安全措施来避免以上问题的产生。

Web应用系统是由操作系统和Web应用程序组成的。许多程序员没有没有经过安全编码的培训,不知道如何开发安全的应用程序,他们的经验也许是开发独立应用程序或企业Web应用程序,这些应用程序没有考虑到安全缺陷被利用时可能会出现灾难性后果。Web应用系统安全问题涉及多方面,主要可概况为以下以下4个方面:

1.1操作系统、后台数据库的安全问题

这里指操作系统和后台数据库的漏洞,配置不当,如弱口令等等,导致黑客,病毒可以利用这些缺陷对网站进行攻击。

1.2Web发布系统的漏洞

Web业务常用的发布系统(即Web服务器),如IIS、Apache等等,这些系统存在的安全漏洞,会给侵入者可乘之机。

1.3Web应用程序的漏洞

主要指Web应用程序的编写人员,在编程过程中没有考虑到安全的因素,使得黑客能够利用这些漏洞发起对网站的攻击,比如SQL注入,跨站脚本攻击等等。

1.4自身网络的安全状况

网站服务器所处的网络安全状况也影响着网站的安全,比如网络中存在的DOS攻击和其他病毒的攻击等,也会影响Web应用程序的正常运行。

2.ASP.NET的安全机制

ASP.NET开发的WEB应用程序安全性主要依赖于验证和授权2项功能。验证是确认请求的程序,可以用来检查用户身份,通常是以用户名和密码来确认用户身份;授权是当用户身份已经验证以后,可以授予拥有进入哪些网页和资源的权限。简单地说,验证用户可以存取网页,授权用户可以进去哪些网页。

2.1验证

ASP.NET提供了多种方法来处理验证请求和确认身份,其默认验证方式有3种,在WEB配置文件Web.config的<authentication>标记中可以定义ASP.NET使用的验证方式。

Windows验证方式是使用传统“基本”(Basic)、NTLM/Kerberose 和 Digest 验证方式,它是IIS 服务器直接使用的Windows用户作为系统用户,通常使用在Intranet环境;Form窗体基本验证是使用Web窗体获取用户名和密码后,以FormsAuthentication 类或Membership 类方法来检查用户身份,可以使用Web.config文件、XML文件或数据库来存储用户数据;Passport 护照身份验证是Microsoft提供的单一登录服务,如同护照一般,用户只需登录一次,就可以进入任何参与此服务的群组应用系统。

2.2授权

授权意味着统一访问资源,这种资源包括文件系统、数据库、消息列队、aspx页面文件等,授权方式主要由文件授权和URL授权2种。文件授权以Windows身份验证为前提,由FileAuthorizationModule类执行,它利用某个资源上的访问控制列表或权限来控制用户或组访问受保护的资源;URL授权是通过在Web.config文件定义用户或角,并映射到特定URL,利用UrlAuthorizationModule类来执行的授权方式。

3.Web应用系统的安全防护策略

3.1验证码技术

3.2判断用户登录方案

在用户登录应用系统过程中,将用户名和用户类型保存在Session变量中,在页面加载过程中,既可以通过Session变量值,判断用户类型,使网页定向到不同的访问页面,又可以防止非法用户通过地址栏非法访问网站内部网页。当用户退出时,将网页中存放的关于用户登录信息的Session变量清空,确保安全退出。

3.3页面间传值安全技术

ASP.NET提供了多种在页面间传递Web窗体内容的方法。其中,使用URL网址参数来传递数据的方法在浏览网址栏会显示传递值,容易被修改,使用Session变量来传递数据的方法会因为存储过多的数据而消耗较多的服务器资源,而Web窗体通过使用Page类属性,调用Server.Transfer()来传递数据是页面传值较为安全的一种方法。要定期查看日志文件,分析可疑事件,不要将敏感信息(如隐藏域Cookie)存储在可从浏览器访问的位置。

3.4保证重要信息的安全

为了提高安全性,可将用户名,密码设置为MD5或SHA1(安全哈希算法)。如果需在浏览器和服务器之间传输重要信息,须使用安全套接层(SSL),使用受保护的配置来确保配置文件(Web.config或Machine.config文件)中重要信息的安全。

3.5数据经常备份

经常对数据进行备份,并将备份存放在安全的场所;将服务器存放在安全的场所(有特定的机房);使用不易破解的密码;确保IIS的安全;关闭不使用的端口和不使用的服务;安装Microsoft和其他供应商提供的最新安全修补程序;使用Windows事件日志记录,并经常检查日志,以便发现可以活动。

4.数据库安全访问

4.1 数据库连接字符串的存放

Web.config文件时专门用于为应用程序配置系统设定、安全性设定、应用程序设定和会话设定的简单XML文件,在Web.config中设置添加数据库连接字符串常量可以提高程序安全性,通用性和可移植性。

4.2 SQL注入式防范措施

SQL注入式攻击是指利用程序上的漏洞,在目标服务器上动态生成和执行恶意SQL命令,从而达到修改、获得和破坏数据库服务器上的信息的目的。由于注入语句和实现攻击都离不开特殊和敏感字符及字符串,要防范SQL注入攻击,方法有3个:

#使用验证码验证,限制攻击者输入字符串长度和类型,从而限制攻击者对服务器发送大量非法指令;

#对用户输入的数据进行过滤,删除非法字符;

#利用参数化存储过程来访问数据库,确保不会将输入字符串看做是可执行语句。

4.3 定制统一出错页面

为了防止程序运行期间任何未处理的意外发生时,错误页面代码泄露,可以制定程序出错时转向统一的出错页面,而不必再每个网页显示程序错误代码

Web应用系统在飞速增长的同时,所面临的风险也只会是有增无减的,开发者在编写代码注重系统功能的同时,系统安全性所面临的的压力也越来越大,我们只有从Web应用系统的设计之初开始,就从多方面考虑并采取正确的措施来确保安全性。

原文链接:https://www.cnblogs.com/wangpeijingOK/archive/2013/04/11/3015001.html

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/18072

(0)
上一篇 2023年7月21日
下一篇 2023年7月22日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml