魏雨东 郭白涵(西南财经大学天府学院智能科技学院;西南财经大学天府学院财务会计研究所 四川 成都 60064)
前言:在线教学平台已发展多年,MOOC的流行使得在线教学平台的地位有了明显的提升;又促进了其在高校日常教学工作中的使用,通过其进行辅助教学,以至于部分课程完全搬到线上来进行学习和考核。在线教学平台在学习的时间上有明显的优势,学生的考核数据也非常容易得到(学习的行为日志和在线的考核信息);正是因为这种突出的作用,使得其系统安全问题变得日益严重。线上的表现直接影响学生的最终考核,各种主动的安全攻击行为变得非常的普遍。本文将从4个方面探讨在线教学平台的信息安全管理问题。
本文所研究的在线教学平台初始部署的时候采用的是系统的独立用户名和密码,后经过调整,将用户的验证工作都通过单点登录实现(CAS+OpenLDAP);手机端采用LDAP提供的接口进行处理。采用统一登录后,在方便用户的同时也带来了相应的安全风险问题,一旦突破,意味着所有系统都会向攻击者开放;已知的安全风险主要来自LDAP注入攻击。OpenLDAP采用TCP/IP查询和修改目录服务,对于类似这样的注入(&(attribute=value)(first_filter))(second_filter),OpenLDAP 只会执行第一个过滤器,而第二个过滤器会被忽略,这样就导致类似的攻击可以成功。
防御:LDAP注入的防御需要处理好用户输入的内容,对其进行全面地过滤;特别注意LDAP中用到的特殊字符和需要转义处理的字符,如右边的圆括号不进行过滤处理的话就会导致过滤器闭合而生产攻击者需要的filter。另外,根据实际情况,也可以采用其他的安全产品来进行LDAP注入的防御。
本案例系统应用的高校主要由分布在两地的校区构成,两校区的学生人数相仿;在负载均衡与web服务器安全的双重考虑下,启用了Nginx为反向代理服务器,后边配备4台IIS服务器进行系统的部署。反向代理服务器的配置,至少有以下的好处:1.保护了真实的web服务器,web服务器对外不可见,外网只能看到反向代理服务器,可以保证web服务器的资源安全;2.解决了Ajax的跨域问题,从而避免了攻击者通过上传类似crossdomain.xml的文件,绕开浏览器的同源策略,从而进行网络攻击的问题。在使用Nginx作为反向代理服务器的同时,也需要注意其本身的安全漏洞,及时进行软件升级,并熟悉其安全配置。
考虑到在线教学平台中,存在大量的文件读写情况,案例系统特别开通了独立的文件服务器功能。采用在CentOS系统上搭建基于Samba的文件共享体系,使Web服务器(Windows Server)可以通过共享方式写入系统文件;在读取时,通过部署在文件服务器上的Nginx服务来提供文件的HTTP访问。这样首先面临的是用户安全认证的问题,用户登录系统后,通过Web服务器获取到相应的文件服务器路径,这时对于文件的访问权控制已交给文件服务器上的Nginx服务。系统运行之初,这里没有再进行身份验证工作;采用这种方式的初始目的是降低Web服务器的并发访问,目前也需要考虑增加安全认证工作,已保证只有授权用户可以访问相应的资源。
平台中一般的文件上传工作使用类似SWFUpload一类的Flash组件进行,该种组件使用非常方便,界面也很友好;然而Flash自身的安全问题实在是不得不考虑的一点,目前,主流的浏览器默认设置下都已不支持Flash组件;应该及时升级上传组件,采用新的HTML5的上传组件解决问题。另外,在系统的部分功能页面中,使用了FCKEditor编辑器;在一些版本的FCKEditor中,通过检查文件的后缀来确实该文件上传是否安全,此即为采用黑名单的方式限制上传文件的类型。然而黑名单不一定能包括所有类型的危险文件;而且攻击者可以通过修改上传的HTTP数据包,来规避代码对于后缀名的检查。使用独立的文件服务器,可以一定程度上避免由于上传文件带来的Web服务器安全问题,但最好确认是否需要编辑器的文件上传功能,谨慎对待。
严格来说,程序逻辑漏洞属于开发过程中的问题,对于系统在运行期间将面临的各种风险,必须尽可能在开发阶段列举出来;对于在线教学系统而言,所有能影响学生成绩的功能部分都必须是安全防范的重点。案例系统在开发之初,并没有在这些地方有充分的考虑,后期导致了在学生考勤和学生作业两个板块遇到的安全问题。在教师给学生打考勤的功能处,教师可以通过下拉列表选择相应的课程和教学班级,经检查,程序用的是课程的名称和班级的名称进行的后台检索,更为麻烦的是,检索条件中并没有限制在该教师的教学班级中;所有的教学班级都可以被检索。利用限制浏览器提供的调试功能,可以很方便的查出其他班级的考勤信息,进行修改。
另外一个作业问题,发生在对于过期作业的提交上边。每个作业都设置有过期时间,到期后作业不可以提交;在这个地方的正确严谨的处理包括:1.提交页面加载时根据服务器时间确定是否加载提交按钮2.在提交到服务器时,检查服务器时间是否已过期。初始版本中,代码只进行了第1条的处理,同样,通过浏览器的调试功能,在对比正常提交网页后,就可以找到使提按钮出现的办法;后边的上传工作就畅通无阻了。虽然即便最好的项目管理、代码检查也不能完全规避这种风险。但是程序的逻辑漏洞必须被重视,在重要的地方,必须留有充足的日志记录,由专门的维护人员对日志记录进行定期的检查。
基于Web的在线教学平台正承载越来越多的教学任务,不同于较为封闭的教务系统,在线教学平台是比较开放的,而且发展的时间不长。在开发和部署在线教学平台的时候,必须考虑到由于涉及成绩问题而带来的主动安全攻击。