这一阶段的安全编码训练中,需要向学生指出:软件开发中需要考虑安全功能方面的问题,如增加口令认证等访问控制机制,但是,安全功能并不等价于安全的功能。程序要成为安全的程序,不能仅仅通过增加几个安全功能完成,其所有部分都必须是安全的,非安全功能中还会有更多的方式出错而引发安全问题。Web中的很多安全问题就源于此。
4 小结
本文介绍了作者多年来对信息安全专业方向的学生进行安全编码能力培养的探索与实践工作。重点介绍了在程序设计教学中融入安全编码教学的3个主要途径。整个安全编码能力培训中融入了安全软件编码最佳实践的主要内容:使用最新版本编译器与支持工具;使用编译器内置防御特性:缓冲区安全检查(/GS)、安全异常处理(\SAFESEH)、数据执行保护技术(/NXCOMPAT);使用源代码分析工具;切勿使用违禁API函数等。实际效果表明,学生的安全编程能力得到了提高,在求职面试及实际工作中有较好的表现。
在对学生安全编码能力培养的实践中我们应当注意:
1)系统性。在低年级的程序设计,在中高年级的操作系统、软件工程等课程都要融入相关安全知识,做到安全编程训练不间断。
2)知识的阶段性提升。培养过程中要做到3个提升:防御性编程到安全性编程的提升;增加安全功能到增加安全的功能的提升;注重软件安全到注重软件质量的提升。
3)理论与实践相结合。学习的目的是为了应用,解决实际问题,因此在融入安全编码内容的教学中更要注意实践教学。此外,也要注意纠正部分学生忽视安全理论学习的错误想法。教学的主要目的不是教学生在特定的程序设计语言中怎样避免安全问题,而是教他们在程序设计实践过程中应遵循哪些原则来防止安全问题的发生,这些不同点正是高等教育与职业培训之间的不同之处。
4)调动学生学习的积极性。笔者在教学中发现,学生对于使用安全工具的兴趣要比理论学习的兴趣大,因此教师要注意正确引导,以提升学生的安全编程能力为目标,以发挥学生的主动性积极性为核心,以施加对学生的积极影响为出发点,从知识体系、自学指导、学生组织、项目实践、交流合作等方面对安全编程能力的培养进行多样化的尝试。
参考文献
[1] 《信息安全类专业指导性专业规范》项目组(“第一届中国信息安全学科建设与人才培养研讨会”). 信息安全类专业知识体系[R]. 2007.11
[2] 张焕国,黄传河,刘玉珍 等. 信息安全本科专业的人才培养与课程体系高等理科教育[J].2004,54(2):16-20.
[3] 王清贤,朱俊虎,陈岩. 信息安全专业主干课程设置初探[J]. 计算机教育,2007,10:12-14.
[4] 郭剑,朱旻如,孙力娟. 编程能力的后续培养[J].计算机教育,2008,20:98-99.
[5] Michael Howard, Steve Lipner. The Security Development Lifecycle: SDL [M]. Washington, Microsoft Press, 2006.
[6] Michael Howard. Security Development Lifecycle(SDL) Banned Function Calls [OL]. http://msdn.microsoft.com/en-us/library/bb288454.aspx
[7] Return-to-libc attack[OL]. http://en.wikipedia.org/wiki/Return-to-libc_attack
[8] Gary McGraw. Software Security: Building Security In[M]. Addison-Wesley Professional, 2006
[9] Salzer, J. Schroeder, M. The protection of information in computer systems[C]. Proceedings of the IEEE, vol.63,no.9,1975:1278-1308.
[10] Brian Chess, Jacob West. Secure Programming With Static Analysis[M]. Boston:Addison- Wesley, 2006.
[11] Analysis Tool List[OL]. http://www.cs.cmu.edu/~aldrich/courses/654/tools/
[12] 安全编码实践[OL]. http://blog.csdn.net/chengyun_chu/
[13] the Open Web Applications Security Project[OL].http://www.owasp.org.
[14] 陈波,于泠.计算机系统安全实验教程[M]. 机械工业出版社,2009.
作者简介:
陈波(1972-),男,博士,副教授,硕士生导师,南京师范大学计算机科学与技术学院 院长助理、网络与信息安全系主任;于泠(1971-),女,博士,副教授,研究方向:信息安全。吉根林(1964-),博士,教授,博士生导师,南京师范大学计算机科学与技术学院 院长。
(责任编辑:adminadmin2008)