本站小编为你精心准备了软件开发中安全代码的应用参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
摘要:
计算机漏洞带来了严重的影响,阻碍了用户的正常工作,不利于营造一个安全可靠的计算机运行环境。本文结合笔者多年来的工作经验,围绕各种网络安全攻击技术,进行了针对性的分析,并引出了实施安全代码技术的重要性和应对措施,希望对相关领域的工作有所启发。
关键词:
0引言
现阶段,随着科学技术的发展,各种开发工具层出不穷,为程序员编程工作的顺利进行提供了极大的方便。需要值得注意的是,不论是为了保证程序的正常运行,还是基于对安全的考虑,编程人员都有权利和义务保证程序代码的安全,并力求在此基础上强大其功能。所谓安全性代码是指那些工作于不同信任等级的同一代码,其能在另一个信任等级处实现对其他信任级别中任一处理信息的操作,在网络程序、CGI脚本以及计算机的Web浏览器中都有分布。所以,对运行调试期的程序进行安全代码技术的处理意义重大。
1软件开发中安全的重要性
广义上的软件是指按照一定顺序、规则组织起来的计算机指令和数据总和,软件一般可分为系统软件和应用软件两种类型,其中前者可视为后者的运行平台,从编程人员角度来说,一个软件就相当于数据、程序、文档的综合体。在计算机和互联网越来越普及的信息时代中,软件已经成为人们日常生活中不可或缺的工具,几乎每一步操作都与软件程序有关。软件开发过程中的安全意识、安全设计和安全实施等工作,直接决定了软件安全性。鉴于当前软件开发产品越来越“傻瓜”的特点,强调其应用层的功能完善,客观上忽视了安全层面的机制完善,容易遭到黑客的觊觎。互联网产业化虽然形成了“BAT”这样的行业寡头,但在安全层面依然存在很多漏洞,且现代人的生活轨迹与软件应用息息相关,如办公、娱乐、消费等。近年来频频曝光的黑客攻击事件,本质上是寻找到软件漏洞、缺陷之后加以攻击,从而造成大量信息泄露,给当事人造成严重的损失;因此,在软件开发中必须强调安全性。
2程序开发期的安全代码措施
在进行代码编写的过程中,编程人员并不能准确找到存在的安全隐患,也不能及时的预防隐患的发生,所以在一定程度上影响了代码编写工作的效率。因此,对于程序人员来说,不能仅立足于当前工作的需要,应该在工作中不断提高自我修养,不断总结编程经验。著名网络专家JeffSchmidt根据这种现象,提出了安全编写的思想,下面我们据此进行针对性的分析。
2.1只授予软件最低的权限
软件根据自身的功能来获取不同级别的权限,如杀毒软件与通信软件相比,所开放的权限更大、更底层。程序在进行注册表和系统文件的更改时,由于其需要通过系统级函数的权限,所以也就在一定程度上给黑客带来了可乘之机。为此,我们可以根据不同程序的功能,将其划分成不同的模块,并分别授予每个模块最低权限。授予软件最低权限的优势在于便于程序员检测和维护,也可以更方便的展开审核。
2.2检查所有的返回代码
在进行系统或者第三方提供的外部库函数的调用工作时,程序员必需要认真检查所有的返回代码,为程序的稳定运行提供切实的保证。本质上,返回代码是软件开发中的错误反馈、异常反馈机制,在软件正常工作情况下,系统会反馈相对复杂、全面的信息内容,但在开发过程中不允许也不具备实现条件,编程人员需要通过简单反馈信息加以判断,并迅速了解出错位置信息。因此,返回代码通常是判断代码;引起程序出错的原因有很多,比如,部分非标准格式化的环境变量、缺乏充足的系统资源以及用户自行编辑配置文件或注册表键而引起的误操作等。此外,在程序运行过程中,必须将各个模块的功能充分协调起来,使程序更好的工作于任意一个环境中。
2.3竞态条件
所谓竞态条件是指攻击者会在用户进行文件编写、共享量的修改或者数据的更新工作时,乘机进入系统,修改程序数据,使得程序产生错误的输入。比如,某一文件在该程序读写文件之前被控制,攻击者会编写一段指令代码将写入的程序转移到另一个文件中,这在临时文件中发生的概率较大。攻击者会用自己的假文件来替代用户的临时文件,实现数据信息之间的转移。为了有效防止这种情况的发生,我们从两方面进行防治:其一,及时进行资源文件的验证,降低事故发生的概率;其二,建立一个私有目录用于存放部分临时文件,并且必要时实现对系统的锁定。
2.4进行边界检查、防止缓冲区溢出
当程序中存在缓冲区溢出漏洞时,攻击者往往会将部分具有一定权限的安全代码植入其中,此时其会通过一些手段获得被攻击主体的系统管理员权限。攻击者利用该漏洞不仅可以叫停目标服务,而且还可以获得更多的访问权限或者对于存在缓冲区溢出漏洞的远程服务来说,可以通过远程操作实现对目标的控制。此外,对于检查代码来说,其动态和静态缓冲区存入数据的情况需要根据所使用开发语言的类型来决定。同时,为了确保缓冲区的安全,需要从缓存的起始位置开始对每个缓冲区进行跟踪,直到程序结束时停止该任务。
2.5保证代码失效时自动关闭
当用户软件系统受到攻击时,采取该方法可以实现对用户计算机安全的保护。具体来讲就是,如果我们发现软件系统无法正常的工作时,应该立即停止所有对系统权限的访问,关闭计算机,避免攻击者进入控制系统。比如,如果攻击者在编程人员进行防火墙系统的代码编写工作时,会采取强制性的拒绝服务功能,那么编程人员应在第一时间断网自保,进而将损失降到最小,实现对计算机的保护。
3运行调试期的安全措施
软件开发是一项长期且复杂的工作,但从生命周期理论角度分析,最复杂的工作并不是设计和实现环节,而是必须要进行调试阶段的检验,确保软件系统各项程序处于正常运行的条件下。该环节虽然集中了开发小组中所有工作人员的智慧,但是不可避免的依然会存在一些安全隐患问题,为此必须要制定审核程序运行性能的标准,利用其来指导各项调试工作。在这个过程中我们需要明确以下几点:
(1)与新软件的开发所使用的标准不同,软件的维护过程也有一套属于自己的运行标准,并且此要求要比开发流程严格的多。软件程序调试、维护的过程不仅仅是对实用功能的检测,同时也包括系统抗压性、极限性等。考虑到调试、维护过程中造成系统崩溃的可能性较大,所以基于此要建立一个完善且功能强大的软件修改控制系统。
(2)为了使整个调试工作的目标更加明确,且方便实现对其的全过程检查,一般选择根据实际情况建立程序的运行图,进行针对性的数据流分析,进而将程序出口和入口处发生危险的概率降到最低,且使整个程序更加精简。同时,为了避免给攻击者的反跟踪提供便利,一定要使用较为复杂的安全代码。
(3)为了在异常环境下也能通过其检测来发现问题,需要使用一些方法给运行程序输入一些数据或命令,有效避免安全隐患的发生。比如,通过调试器和反汇编语言综合作用的结果,让代码运行于非正常参数的环境中;避免配置文件或者其他类型的文件中出现格式错误;利用垃圾数据的检验机理来实现对网络数据的接收等。
(4)在测试阶段,十分有必要利用测试性的自我攻击方法处理涉及网络数据的软件,比如,我们可以使用一个自动的漏洞扫描程序,检测各应用软件的Email、DNS服务器等核心系统,必要时也可以利用端口扫描的方式实现对连接到Internet的服务器的检测,再通过拨号测试的攻击作用,进而使得连接到本网络中有缺陷的modem露出原形。这些方法都是切实可行的,它依托于网络内部架构的工作机理,通过对其的模拟作用,可以将普通平台上的漏洞暴露出来,进而找到防火墙、操作系统以及服务器程序的问题设置。
4结束语
综上所述,要想使得计算机的安全有所保障,必须要编写安全可靠的运行程序,相应的这也对编程人员提出了严格的要求,不仅要时刻具备安全编写的意识,同时还要不断提高自己的技能修养,熟练掌握安全代码技术,注重经验的积累和创新,彻底击碎攻击者的阴谋。
参考文献:
[1]宋威,祁献鹏.软件开发中的安全代码技术[J].网络安全技术与应用,2002.
[2]余勇,林为民.软件安全开发模型的研究[J].计算机安全,2005.
[3]梅宏,王千祥,张路,王戟.软件分析技术进展[J].计算机学报,2009.
作者:李奇冰 单位:天津南开创元信息技术有限公司