Web开发课程中“入侵与防范”教学方法研究
2009-12-11张继红陈小全
张继红 陈小全
摘要:本文提出在Web开发课程的“入侵与防范”教学过程中,采用横向联系和纵向深入教学方法、启发式教学方法,培养学生动手能力,鼓励学生创新,使学生学习的积极主动性得到发挥;通过“任务驱动式”和分层架构教学方法,使学生尽快掌握所学知识,注重培养学生动手能力,取得了较好的教学效果。
关键词:攻击;防范;教学方法
中图分类号:G642 文献标识码:B
1引言
Internet的开放性使得Web系统面临入侵攻击的威胁,Web开发课程中需要讲解如何建立一个安全的Web系统?Web程序被安装在一台或多台(分布式)Web服务器上,一旦安装成功,就等于在为广大用户提供服务的同时,给入侵者打开了一条或N条新的通路。除了服务器管理员对安全进行配置和漏洞扫描外,Web程序在开发过程中也需要考虑入侵攻击与防范。道高一尺,魔高一丈,安全漏洞是不断发展的,有新的应用出来,就会出现新的漏洞。绝大多数公司部署了防火墙,防火墙的职责是保护“大门”,但是攻击者如果从别的途径进入,防火墙也很难处理。所以,Web应用攻击就是黑客开始寻找新的攻击方法中的一种。Web应用攻击之所以与其他攻击不同,是因为它们很难被发现,而且可能来自任何在线用户,甚至是经过验证的用户。
通过Web开发课程中“入侵与防范”的讲授,使学生了解Web系统中存在的安全风险与威胁,掌握Web安全的基本知识和技术,并使学生能够初步具备提高Web系统安全意识与掌握安全防范技术的基础。该课程的教学内容包括如下几个方面:
(1) 客户机的漏洞,主要内容包括对客户端验证的攻击。
(2) 基于状态的攻击,主要内容包括隐藏域、CGI参数、破坏Cookie、URL跳跃以及会话劫持。
(3) SQL注入,主要内容包括常见数据库漏洞、创建SQL注入检测的数据库平台、搭建SQL注入漏洞站点、SQL注入攻击测试、卡住SQL注入的关口、存储过程的SQL注入。
(4) 配置安全的Web服务器,主要内容包括数据库的安全防护、Access数据库防下载处理、SQL数据库的配置、对网页木马后门的防范和检测、网页木马后门查找工具、设置网站访问权限。
2教学方法
Web开发课程中“入侵与防范”是学生比较感兴趣的内容,课程涉及的内容比较多,如何使学生掌握关键的Web安全技术,具备初步的Web开发中安全防范能力?我们在讲课中就教学方法进行了一些具体研究。
2.1横向联系和纵向深入教学方法研究
2.1.1横向联系的教学方法
Web开发课程中在讲授客户端验证需要注意的安全问题时,采用横向联系的教学方法,分别讲授了:Windows身份验证、Forms身份验证、Passport身份验证。
(1) Windows身份验证
在 ASP.Net应用程序中,Windows 身份验证将 Microsoft Internet 信息服务(IIS)所提供的用户标识视为已经过身份验证的用户。IIS 提供了大量用于验证用户标识的身份验证机制,其中包括匿名身份验证、Windows 集成的 (NTLM)身份验证、Windows集成的(Kerberos)身份验证、基本(base64编码)身份验证、摘要式身份验证以及基于客户端证书的身份验证。
在ASP.Net中,使用 WindowsAuthenticationModule 模块来实现 Windows 身份验证。该模块根据 IIS 所提供的凭据构造一个 WindowsIdentity对象,并将该标识设置为该应用程序的当前 User 属性值。
Windows身份验证是ASP.Net应用程序的默认身份验证机制,并被标识为使用 authentication配置元素的应用程序的身份验证模式,如下面的示例所示。
(2) Forms身份验证
Forms身份验证提供了一种方法,使您可以使用自己的代码对用户进行身份验证,然后将身份验证标记保留在 Cookie 或页的URL中。Forms身份验证通过Forms AuthenticationModule参与ASP.Net页的生命周期。可以通过FormsAuthentication类访问Forms身份验证信息和功能。通过Forms身份验证,可以使用所创建的登录窗体验证用户的用户名和密码。未经过身份验证的请求被重定向到登录页,用户在该页上提供凭据和提交窗体。如果应用程序对请求进行了验证,系统会颁发一个票证,该票证包含用于重建后续请求的标识的密钥。
(3)Passport身份验证
Passport身份验证是由 Microsoft 提供的集中身份验证服务,该服务为成员站点提供单一登录和核心配置文件服务。Passport 是基于 Cookie 的身份验证服务。使用 Passport 身份验证的示例事务对话的工作方式如下:
客户端向受到保护的资源(如 http://www.contoso.com/ default.aspx)发出HTTP GET请求。
检查客户的Cookie是否具有现有的Passport身份验证票。如果站点找到有效的凭据,则站点对该客户进行身份验证。如果请求不包括有效的身份验证票,则服务器返回状态代码 302 并将客户重定向到Passport登录服务。响应在查询字符串中包含一个URL,该URL被发送到 Passport 登录服务以便将客户定向回原始站点。客户端执行重定向操作,再向Passport登录服务器发出HTTP GET请求,然后传输来自原始站点的查询字符串信息。Passport 登录服务器向客户提供登录窗体。客户端填写窗体,并使用安全套接字层(SSL)将 POST发送回登录服务器。登录服务器对用户进行身份验证并将客户重定向回原始URL。响应在查询字符串中包含一个加密的Passport Cookie。客户遵循重定向并再次请求原始的受保护资源,这一次使用 Passport Cookie。起始服务器上的 PassportAuthenticationModule 会检测是否存在 Passport Cookie,并测试身份验证。如果成功,则该请求通过身份验证。
2.1.2纵向深入的教学方法
讲授ASP.Net网站安全时采用纵向深入、逐步扩展的教学方法:操作系统安全、IIS安全、数据库的安全。
操作系统安全内容包括:
(1) 在第一时间下载安装微软的补丁程序
(2) 安装防火墙
(3) 安装防病毒软件
(4) 不要在服务器上执行管理功能以外的功能
IIS安全内容包括:
(1) 将IIS的默认Web站点从c:intepub更改到其他卷
(2) 确保应用程序使用低权限的本地服务帐户运行ASP.NET代码
(3) 设置Web目录的访问权限
数据库的安全内容包括:
(1) 将SQL Server安装在NTFS分区上
(2) 安装当时发布的最新服务器包和修补程序
(3) 给sa帐户设置足够复杂的密码
编程时需要注意的安全问题也采用纵向深入的教学方法,内容如下:身份验证、输入有效的验证(利用内置的验证控件或自行定义,阻止不符合规范的数据的提交)、使用参数化的存储过程、输出数据进行HTML编码、信息加密存储。
2.2采用了启发式教学方法
针对Web开发课程中“入侵与防范”的涉及内容多、学时数少的特点,我们采用了启发式教学方法,发挥学生主动性,鼓励学生自学一些内容。在课程内容安排上先讲解Web系统遇到的威胁、分析入侵的原因,然后对各种Web系统攻击技术进行深入的介绍与分析,并给以详细的攻击演示,使学生能够对Web系统攻击技术有一个整体的认识,对Web安全技术产生兴趣。在随后的Web安全技术的讲解中,精心设计教学课件,关键部分采用了案例教学,使学生能够深刻理解学习内容,激发学生的学习兴趣,取得了良好的教学效果。这门课程涉及内容比较广泛,为避免“填鸭式”的教学方法,我们采用了启发式教学方法。针对Web入侵出现的一些现象提出问题,鼓励学生分析问题和解决问题的思路,引导学生学会表达、学会倾听,学生回答问题后给予赞扬和指点,使学生养成积极思考的习惯。
2.3运用“任务驱动式”教学方法
“任务驱动”教学方法提倡教师指导下的、以学生为中心的学习。在整个教学过程中教师起组织者、指导者、帮助者和促进者的作用,利用情境、协作、会话等学习环境要素充分发挥学生的主动性、积极性和创造性,最终达到使学生有效地实现对当前所学知识的意义建构的目的。“任务驱动”教学法的主要特点是“任务驱动,注重实践”。它很适合Web开发课程中“入侵与防范”的教学,因为该课程大多是实践性很强的课程,要求学生既要学好理论知识,又要掌握实际操作技能。同时由于这些课程知识内容更新很快,要求学生必须具有一定的自主学习能力与独立分析问题、解决问题能力,才能适应信息时代与学科知识发展的特点。
合理分解任务是任务驱动教学法的关键。分解任务是将一个大的任务分成若干个子任务,再将子任务往下分,直到每个子任务可操作或执行为止。在这些子任务中,有很多是以前没学过的知识或技能技巧,即隐含了新的知识点,这时就需要引发学生的积极性和探究问题(任务)的欲望,教师就得使用各种信息技术手段,创设任务情景,通过讲解、示范等多种教学方法,尽量不让学生对任务产生太大的畏难以致抵触情绪。教师要做到让学生在情境中学习,在任务的分解过程中获取知识,提高分析问题的能力。如“攻”、“防”是大任务,大任务下有三个一级的子任务:网站入侵的常见手法、流行网站入侵手法与防范、远程攻击入侵网站与防范、网站源代码安全分析与测试,在四个子任务中又分别有若干个二级子任务。在教学时,先让学生完成一个个二级子任务,学生可自由发挥,教师指导。随着任务分析的深入细致,使“攻”、“防”大任务不断完整,结构不断清晰。这实际上是将教学的内容拆解为一个个的“任务”,逐步地展示、布置给学生了。然后综合每人的“任务”成果,从而了解网站入侵的全部过程。在此过程中,教师可以给出一些实例以供参考,让学生产生感性认识,知道这些功能或任务是可以通过学习完成的。这样可以逐步消除对完成任务的畏惧感,树立信心,使教学过程得以顺利进行。
2.4分层架构教学方法
我在讲授ASP.Net和JSP课程中涉及到Web的安全问题,例如:JSP采用MVC模式分层架构(STRUTS框架)进行开发,就可以把所有的文件分开,根据其用途,分别放在不同的文件夹下(分层),每个文件夹下的文件只负责自己的事情。例如数据访问层的代码就放在数据访问层的文件夹下,业务逻辑层的代码也都放在自己的文件夹下,当显示层(这一层是为了把最终的运算结果显示给用户看)的需求发生变化,就像前面的客户需求,我们只要修改这一层的文件就是了,其他层的代码根本不需要动,而修改者也不需要懂得其它层的代码。代码分层了,意味着漏洞也在跟着分层,我们寻找JSP漏洞的思路也要跟着分层,才能与时俱进。
3结束语
本文从课程教学实际出发,对Web开发课程中“入侵与防范”教学过程中的教学方法进行了一些具体研究。教学不仅要传授给学生知识,更重要的是培养他们分析问题和解决问题的能力。Web安全是计算机学科的一个新方向,Web应用攻击之所以与其他攻击不同,是因为它们很难被发现,而且可能来自任何在线用户,甚至是经过验证的用户。很多技术在现有的教科书中都没有涉及。在教学过程中,注重和学生的思想交流,锻炼他们的动手能力,从“攻”、“防”两个角度,通过现实中的入侵实例,并结合原理性的分析,展现Web系统入侵与防御的全过程,激发他们的创造思维。根据同学自身的特点,有针对性地进行指导。注重发挥学生的积极主动性,创造机会使学生发挥自己的价值。
参考文献:
[1]Simson Garfinkel,Gene Spafford .Web安全与电子商务(影印版)[M]. 2版. 北京:清华大学出版社,2002.
[2]Steven Splaine. Testing Web Security:Assessing the Security of Web Sites and Applications[M]. 李昂,王梅蓉,金旭,译. 北京:机械工业出版社,2003.
[3]William Stalllings.网络安全基础应用与标准[M].3版. 白国强,译. 北京:清华大学出版社,2007.