着眼网络安全意识培养的Web应用程序实验教学设计与实现
2020-09-15董齐芬陶永红
董齐芬 陶永红
摘要:针对各类新型Web安全问题不断出现,而在传统的“Web应用程序设计”教学中往往不被重视的问题,文章以Cookie技术为例,探讨着眼于培养学生网络安全意识的Web应用程序实验教学的具体设计与实现。运用生活化场景设计了利用Cookie记住用户名和密码、Cookie信息取证、Cookie欺骗和禁用Cookie等实验任务,以及关于“中国互联网Cookie技术第一案”的拓展阅读。通过这些简单实验,使学生能够真正有效地明白Cookie及其“双刃剑”效应,体会到网络安全问题。
关键词:Web应用程序;网络安全;Cookie;实验教学设计
中图分类号:TP309 文献标识码:A 文章编号:1006-8228(2020)08-98-04
0 引言
我国高校的计算机类专业大多数开设了“Web应用程序设计”课程[1-2]。传统的教学主要侧重于Web应用系统在功能与美观上的程序设计与实现,其安全问题往往不被重视。然而,随着网络的普及,大量Web应用功能及版本的快速更新,导致各类新型Web安全问题不断出现[3-4]。因此,各高校逐步开设了专门的Web应用安全类课程,在该课程教学过程中,通过一些简单得实验,让学生体会网络安全问题,这是非常有必要的,可为学生进一步学习Web应用安全类课程提供扎实的铺垫[5]。
本文以Cookie应用为例,介绍Web应用程序实验教学设计与实现,以期达到培养学生网络安全意识的目的。文中代码是基于JSP程序设计实现的,但其原理与方法同样适用于其他主流的动态网页设计技术。
1 Cookie应用的实验教学总体设计
在关于Cookie概念、作用及基本用法的理论讲解之后,学生可能对Cookie还是一知半解。为使学生真正有效地明白Cookie及其“双刃剑”效应[6],运用生活化场景设计实验题目,并设置拓展阅读环节。所设计的实验内容见表1。
2 Cookie应用实验设计与实现
2.1利用Cookie记住用户名和密码实验
该实验是典型的Cookie应用例子。通过学生们熟悉的QQ邮箱登录场景,引起学生对Cookie的兴趣,然后布置实验任务一:
设计如图1(a)所示的登录页面,输入用户名和密码,选择是否“十天内记住我的登录状态”,然后点击“提交”按钮,进入如图1(b)所示的登录处理页面,显示用户名和密码。当如图1(a)所示的登录页面上“十天内记住我的登录状态”被选择中,则在十天之内登录时就无需重新输入用户名和密码了。由于已对Cookie概念、作用及基本用法作了理论讲解,可先组织学生讨论思路和尝试编写代码。让学生带着问题进入下面的实验设计与实现环节。
(1)设定保存用户名和密码的cookie名称,这里分别为username和password。
(2)设计登录页面login.jsp。设计如图l(a)所示的登录表单,重点在于每次加载登录页面login.j sp时,首先需要读取cookie文件,将读取到的username和password的值作为登录表单中用户名框和密码框的初始值。对应的代码为:
<% request.setCharacterEncoding(“utf-8”):
String uname="";
String pwd=…:
Cookie[] cookies=request.getCookies();
if (cookiesl=null)(
for(int i=0; i
Cookie c=cookies[i];
rf(c.getName().equals(”username")X//用户名cookie
uname=URLDecoder.decode(c.getValue0,”utf-8”):
,
if(c.getNameO.equals(”password”)){//密码cookie
pwd=c.getValue();
)
)
} %>
用户名:
value=”<%=uname%>”>密 码:
name=”password”value=”<%=pWd%>”>
十天内记住我的登录状态
<,form> <,body>
(3)设计登录处理页面loginDeal.jsp。该页面除了实现如图l(b)所示的读取并显示用户名和密码功能外,还需要根据用户是否选择了记住登录状态分别作出处理:若用户选择了记住登录状态,则新建两个名称分别为username和password的cookie(会覆盖原有的同名cookie),设置它们的属性,并添加到客户端;若用户不需要记住登录状态,则读取名称分别为username和password的cookie,將它们的有效期为失效状态,并重新保存。对应的代码为:
<%
request.setCharacterEncoding("utf-8");
String username=request.getParameter("username");
String pwd=request.getParameter("password");
String[] cldlag=request.getParameteNaluesC'isCookie");
if(ckflagl=null&&ckflag.length>0) 11要求记住登录状态
{
Cookie usernameCookie=New Cookie("username",
URLEncoder.encode(username,"utf-8"》;
Cookie pwdCookie=new Cookie("password",pwd);
usernameCookie.setMaxAge(864000);
pwdCookie.setMaxAge(864000);//有效期為10天
response.addCookie(usemameCookie);//保存Cookie
response.addCookie(passwordCookie);
} else{,,不要求记住登录状态
Cookieo cookies=request.getCookies0;
for(int i=0; i
Cookie c=cookies[il;
if(c.getName().equals("username")
llc.getName().equals("password"》
(
c.setMaxAge(0); ,,设置Cookie失效
response.addCookie(c);,/重新保存。
}
)
}
%>
用户名:<%=username%>
密 , 码:<%=pwd%>
2.2 Cookie信息取证实验
通过第一个实验,学生可以较好地掌握新建Cookie、设置Cookie属性、保存Cookie以及读取Cookie等基本操作,但还是比较抽象。有不少同学会产生这样的疑问,即Cookie像曲奇饼干那样看得见摸得着吗?故通过同学们感兴趣的侦查破案场景,布置实验任务二:
警方抓捕了一位涉网犯罪人员并现场收缴其电脑,但该嫌疑犯缄口不言。若你是警察,你会如何尝试通过技术手段分析该嫌疑犯访问了什么网站、使用了什么用户登录等内容,从而掌握其涉案信息[7]?
在学生的好奇心下,以谷歌浏览器为例,介绍Cookie信息取证方法。
首先,依次进入谷歌浏览器的“设置”一“高级”一“隐私设置和安全性”一“内容设置”一“Cookie”一“查看所有Cookie和网站数据”,即可列出通过谷歌浏览器浏览过的网站的所有Cookie,如图2所示。
然后,选择进入实验任务一中我们自己所设计的网站即“localhost”,可观察到保存用户名和密码的两个cookie,即username和password,如图3所示。进一步分别进入这两个cookie,就可观察到该Cookie的内容、所在域名、创建时间、到期时间等信息。
可见,Cookie是确确实实存储在客户端本地的数据。虽然不同的浏览器查看Cookie的方式各异,但是百度网上均能方便查阅到相关方法,故鼓励学生课后自行研究其他浏览器的Cookie信息取证方法,从而可以较全面地对用户何时通过何种浏览器登录过什么网站、甚至登录名和密码等账户信息一目了然,那么当警方掌握这些重要线索后,再审讯嫌疑人时,就可事半功倍。
2.3 Cookie欺骗实验
实验任务一和实验任务二展示了Cookie的优势,但和大多数技术一样,Cookie也是一把“双刃剑”。比如,你或身边的人是否经历过QQ邮箱在神不知鬼不觉时就被人盗走了,并冒充你的身份登录你的QQ邮箱了呢?这正是同学们遇到过的烦恼与疑惑。为帮助学生解惑,布置实验任务三:
借用Fiddler抓包工具[8],开展Cookie欺骗[9]实验,演示Cookie信息被截获与利用的过程。
通过实验任务一中的登录实例来展示Cookie欺骗实验过程,具体实验步骤如下。
(1)在计算机A上,启动Fiddler,打开实验任务一登录页面:htt卫://1ocal host: 8080/chapter4—9/1ogin.jsp,输入用户名和密码分别为“张三”和“123456”,进入到登录处理页面loginDeal.jsp。Fiddler抓到的包如图4所示。
(2)在Fiddler中选择登录处理页面的session,即http//localh_ost: 8080/chapter4—9/log in.jsp,然后点击“Inspectors”选项卡,并在HTTP请求中选择“Cookies”选项卡,看到关于用户名和密码的Cookie,如图4所示。
(3)将图4中关于用户名和密码的Cookie保存下来。然后,在一台新的计算机B上,启动Fiddler.在Fiddler Script中的OnB eforeRequest函数中添加如下语句: if(oSession.uriContains(”http://localhost:8080/chapter4-9”)) { oSession.oRequest.headers.Add(”Cookie”,
”username=%E5% BC %AO% E4% B8% 89;
password=123456”): }
(4)在计算机B上的任一浏览器中打开实验任务一的登录页面,可以发现该页面的用户名和密码自动填充为“张三”和“……”,如图l(a)所示。这表明计算机A用户的账号信息被计算机B用户利用了。
需要说明的是,上述实验中,利用Fiddler实现了对计算机A的本地抓包。通过配置,还可以实现Fiddler远程抓包,即计算机B远程抓取计算机A上的网站操作行为。这部分内容将在后续的“网络攻防”、“信息安全技术”等课程中深入学习,从而激发学生对后续网络安全类课程的好奇心。
2.4 禁用Cookie实验
从前述三个实验可以体会到,Cookie在给我們带来便利的同时,也会在不经意间泄露我们的隐私,从而被不法分子利用,那么是否可以禁用这些Cookie信息呢?通过讨论该问题,引出实验任务四:
请利用浏览器设置、Cookie文件或目录设置等两种目前常用方式实现对Cookie禁用[10],并体会这两种方法禁用Cookie的优缺点。
在win7系统的谷歌浏览器下,通过实验任务一中的登录实例来开展禁用Cookie实验。
(1)浏览器设置:依次进入谷歌浏览器的“设置”一“高级”一“隐私设置和安全性”一“内容设置”一“Cookie”,将“允许网站保存和读取Cookie数据”功能关闭。此时,实验任务一的“十天内记住我的登录状态”功能已无作用,在实验任务二中图2所示的Cookie列表中也无Cookie信息了。
(2) Cookie文件或目录设置:进入保存谷歌浏览的Cookie文件的目录C:\Users\当前用户名\AppData\LocaI\Google\Chrome\User Data\Default,找到Cookies文件,将其属性设置为“只读”。此时进入实验任务一登录页面时,若Cookies文件属性设置之前启用过“十天内记住我的登录状态”功能,那么仍会自动读取之前保存的用户名和密码,但不会将重新输入并提交的新用户名和密码保存到Cookie文件中。
最后,布置同学们课后在其他浏览器中进行尝试,并查阅是否还有其他可行方法。
2.5 拓展阅读
通过上述实验操作,学生对Cookie会有较深体会,开始思考Cookie技术在实际生活中应用的“双刃剑”效应。为拓展学生对Cookie的认识,引导其课后去关注中国互联网Cookie技术第一案即“北京百度网讯科技公司与朱某隐私权纠纷案”,推荐学生在阅读相关文献[11]和文献[12]的基础上,给出自己的看法。
3 结束语
本文针对各类新型Web安全问题不断出现的背景,以Cookie技术为例,提出了着眼于培养学生网络安全意识的Web应用程序实验教学的具体设计与实现。通过生活化场景设计实验任务,并设置拓展阅读环节,激发了学生的学习热情,并调动了后续网络安全类课程的兴趣。但我们也意识到还有改进的空间,比如目前的教学设计还比较偏向于技术传授,如何将思政元素融入课堂是我们在进一步的实验教学设计中需要考虑的问题。
参考文献(References):
[1]郎振红.翻转课堂在Web程序开发实验教学中的应用研究[J].实验技术与管理,2016.33(2):151-154
[2]李岚,曹宇佳,郭明娟等.基于“创新能力培养”的项目化教学法在动态Web技术课程中的应用[J].兰州文理学院学报(自然科学版),2018.32(6):114-117
[3]蔡晶晶,张兆心,林天翔.Web安全防护指南[M].机械工业出版社.2018.
[4]谭志超.Web应用的安全形势与防护策略研究[J].网络安全技术与应用,2019.12:21-24
[5]李致远,毕俊蕾,宋香梅.OBE教育理念下Web应用安全课程教学模式探讨[J].计算机教育,2019.9:103-107
[6]方霞.Cookie安全与用户隐私研究[J].科技通报,2013.8:44-45,48
[7]吴春生,宋润,贾永生.Cookie信息取证方法简述[J].刑事技术.2011.6:41-43
[8]肖佳.HTTP抓包实战[M].人民邮电出版社,2018.
[9]王永乐,葛洪央.浅析Cookies欺骗攻击与防御策略[J].信息技术.2014.8:176-179
[10]三种方法禁用Cookie让上网更安全[J].网络与信息,2009.10:51
[11]李谦.人梧、隐私与数据:商业实践及其限度——兼评中国cookie隐私权纠纷第一案[J1.中国法律评论2017.2:122-138
[12]朱芸阳.定向广告中个人信息的法律保护研究——兼评“Cookie隐私第一案”两审判决[J].社会科学,2016.1:103-110
作者简介:董齐芬(1985-),女,浙江富阳人,博士,副教授,主要研究方向:机器学习、犯罪预测、Web应用程序设计。