三、确认安全的软件库 如今,为不同语言和目的而开发的各种安全的软件库已经不少了。其中的许多软件库都是为C和C++语言开发的,提供了针对容易被误用的标准库函数的替代代码: 安全软件库的类型:开发团队必须高度关注这些软件库的来源。因为开发团队往往没有时间查看库中的代码,检验其纯洁性,检验代码是否没有被篡改,因而必须确保文件来自一个可信的源。可信源的定义依赖于团队和正在开发的软件。
开发团队不妨考虑下面这些软件库的例子: CERT的可管理字符串库:计算机紧急响应小组(CERT)库的开发是为了应对一个字符串库的需要,主要用于改善新开发的C语言程序的质量和安全性,同时排除程序的广泛应用和标准化……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
三、确认安全的软件库
如今,为不同语言和目的而开发的各种安全的软件库已经不少了。其中的许多软件库都是为C和C++语言开发的,提供了针对容易被误用的标准库函数的替代代码:
安全软件库的类型:开发团队必须高度关注这些软件库的来源。因为开发团队往往没有时间查看库中的代码,检验其纯洁性,检验代码是否没有被篡改,因而必须确保文件来自一个可信的源。可信源的定义依赖于团队和正在开发的软件。开发团队不妨考虑下面这些软件库的例子:
CERT的可管理字符串库:计算机紧急响应小组(CERT)库的开发是为了应对一个字符串库的需要,主要用于改善新开发的C语言程序的质量和安全性,同时排除程序的广泛应用和标准化的障碍。正如其名称所暗示的那样,可管理的字符串库基于一种动态的方法;可以根据需要分配和重新分配内存。这种方法可以确保总有充足的空间用于最终的字符串(包括终止性的空串)。
SafeInt:SafeInt是一个C++模板类。SafeInt在执行一次操作之前要测试操作数的值,以决定是否会发生错误。这个类被声明为一个模板,因而它可用于任何整型类型。SafeInt被微软广泛用于其Windows及Office系列产品。如果您仅对微软的编译器感兴趣,现在的Visual Studio版本就有一个类似的简版。它可用于拥有良好模板支持的任何编译器。
OWASP(开放式Web应用程序安全项目)的企业安全API:该API可以简化许多安全任务,如输入验证或访问控制。
antiXSS库:该库可用于Web应用程序。antiXSS库主要用于防止跨站脚本(XSS)攻击。这些antiXSS库至少支持对所有源自不可信的用户输入的所有输出进行HTML编码。其中的例子包括,OWASP PHP AntiXSS 和SAFECode 11
保障库的安全性:在选择了一个安全库之后,很重要的一点是确保其安全性。对于JAVA的JAR文件,任何人都可以轻易地解压文件、损害JAVA类,然后重新压缩文件。在发现问题时,就得花费几周或几个月的时间才能决定JAR文件中的问题。因而,应当将库放到一个安全的目录中,设置有限的访问权限,确保其不受到破坏。其目标不仅是为了确保库不会被重新打包,而且要限制操作人员。
代码签名:这种技术可用于确保库和函数不会遭受损害或篡改。确保代码在使用之前的完整性的方法包括:认证代码、强健的命名、WinSxS等。代码签名还可以在开源代码库工具中使用,如Mercurial and GIT。关键在于:开发团队需要定义并遵循一个适当的代码签名策略,使其成为安全编码的一部分。
代码库的集中化:将软件项目的代码库以及项目代码库的其它部分存放到一个可控的库中。代码库可以使所有项目代码存放到一个集中的位置,并可以有效地管理其更改。这种做法的安全好处是,易于备份整个代码库,如果代码受到损害还可以在日后进行恢复。将代码放置到一个中央位置也可以使开发团队有效地控制谁可以访问代码库。
相关推荐
-
安全编码有章可循(三)
如何解决本地和非本地代码、被动代码和动态代码之间的安全冲突?代码的安全检查有哪些技巧?应当注意哪些问题?
-
安全编码有章可循(二)
在开始代码开发之前,开发者应当在最大程度上启用编译器的警告和错误。如果在日后再去应对所报告的问题,其代价将很昂贵。
-
编写安全代码三项准备(一)
安全的软件开发是一个涉及到需求、设计、编码、测试等诸多方面的过程。安全的开发周期要从始至终为整体的开发定义过程要素。
-
程序设计者需要谨记的九大安全编码实践
安全专家发现,多数漏洞源自常见软件的相对有限的一些漏洞。软件开发者和设计者应当严格检查程序中的各种错误,尽量在软件部署之前就减少或清除其中的漏洞。