在2008年新年伊始,我参加了由电子工业出版社和看雪学院主办的“安全编程”培训,虽然只有短短两天的时间,却让我感悟颇深,在此希望能与大家一起分享:
一、培训课程安排的合理性
上课环境舒适,提供的服务也很到位,但是这些只是硬件上的支持。在短短的两天时间里,课程内容的安排、讲解的次序也是很合理的,采取了由简到繁、由浅入深的讲解方式,第一天:广角度的介绍了关于安全编程相关的一些基础知识,让学员形成一种安全意识;第二天:采取以实际操作为主,让学员很快上手,不管你是处于什么样的编程水平,都能很简单的理解和明白。以前我也参加过很多类似的培训,但是那些课程在安排上都不是很让人满意,不知是个人的能力问题,还是讲师故弄玄虚,总是听到最后感觉 “浪费时间无收获”。
二、讲师授课方式的新颖性
虽然这次我参加的是一个关于安全编程的培训,有的人可能会认为内容相当枯燥而且没有多少实际意义的话题,我本人最初也是抱着这样的思想去参加这次培训的,但是听了上午半天的课程后,觉得自己错的太厉害了,讲师在讲课的过程中并不是对着电脑念讲义稿,而是采取理论与实例相结合的方式,在讲解知识点的过程中,穿插了大量的实际中出现的问题来分析对应的知识点,多次采取互动的形式,让更多的学员参与互动。因为在培训之前就提醒过参加培训的学员,希望大家都能带上自己的电脑,因此在讲师授课的过程中,学员参与互动的机会更多,更好的巩固了知识,毕竟实践出真知嘛!相信在今后,学校里都将渐渐采用这样的授课方式。
三、内容的丰富性
这次培训的内容主要是以VC++为基础,介绍“安全编程”的主题,设计的内容主要是从安全漏洞的定义开始(漏洞定义:与安全相关能被利用破坏系统安全性的软件的BUG),重点分析了在程序设计中常见的几种经典漏洞(缓冲区溢出、SOL注入、跨站脚本、命令执行)。
但是从整个培训过程来看,此次重点强调的是关于缓冲区溢出的问题,在听课的过程中,让我体会到了做为程序员不仅仅需要考虑如何注意算法的优越性,还需要时刻保存一个安全的意识,如果作为一个程序员不能保证自己编写程序的安全性,哪怕功能再完善也是于事无补的,“千里之堤毁于蚁穴”、“一失足成千古恨”等大道理大家都明白,同时国人都有一种惯性思维就是“事不关己高高挂起”。
虽然在缓冲区溢出漏洞上花费的时间很多,但是在整个培训过程中讲解的知识内容还是很丰富的,几乎将整个内存的原理、结构都分析的非常透彻了,同时还提醒大家如何在程序设计中减少不必要的漏洞,主要的原则有:
1、软件结构选择原则
2、采用有效的源代码管理
3、承担责任
4、永远不相信用户输入(牢记此点,可以减少编写代码中的50%的问题)
5、模拟针对代码的威胁
6、不要编写不安全的代码
7、FUZZY
8、尽可能使用最佳工具(包括编译工具、检测工具)
除了以上内容外,还有更多丰富的内容(缓冲区溢出的类型、缓冲区溢出漏洞的利用等)不在此列举,请参与组织方提供的网站:http://phei.xu24.com上面应该会有更加全面的内容提供。
四、总结
我虽然在此之前也做过不少的系统,开发过很多的软件,但是很少关注安全方面的相关信息,因为在此之前作为程序员的我只是负责算法的优化和功能的实现,至于安全问题一般是后期软件设计人员或者程序的测试人员来完成,但是参加了此次培训后,让我在程序设计时的思路更加开阔了,在以后的程序设计中,作为程序员不仅仅要注意功能和算法,更加要注意的是程序中的安全性问题。联想的柳传志曾经提出过 “木桶原理”:一个木桶能盛下多少水不是取决于最长的那块木板,而是由最短的木板来决定的。因此一个好的软件不是靠最好的功能占领市场,而是由哪个软件的漏洞最少,最能保护数据的安全性决定的!因此提醒更多的编程人员和软件用户“漏洞猛于虎”,不容忽视! |