编写安全代码的3项准备(2)

三、确认安全的软件库

如今,为不同语言和目的而开发的各种安全的软件库已经不少了。其中的许多软件库都是为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。关键在于:开发团队需要定义并遵循一个适当的代码签名策略,使其成为安全编码的一部分。

代码库的集中化:将软件项目的代码库以及项目代码库的其它部分存放到一个可控的库中。代码库可以使所有项目代码存放到一个集中的位置,并可以有效地管理其更改。这种做法的安全好处是,易于备份整个代码库,如果代码受到损害还可以在日后进行恢复。将代码放置到一个中央位置也可以使开发团队有效地控制谁可以访问代码库。

(责任编辑:)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

开源发家史:Linux在为谁代言?

开源发家史:Linux在为谁代言?

开源,也被称为开放源代码(Open Source) 开源(Open Source) 开源运动起源于20实际60年...[详细]

作为码农,我们为什么要写作

作为码农,我们为什么要写作

在程序员这个行业,坚持做技术写作的人一直比较少。我和身边的朋友沟通后,发现他们除...[详细]

键盘敲击识别技术真的靠谱吗?

键盘敲击识别技术真的靠谱吗?

所有人都知道密码是靠不住的。于是现在有一个有意思的行为生物识别是你是如何打字的,...[详细]

干货!企业安全产品采购指南

干货!企业安全产品采购指南

作为一个安全行业的客户,怎么知道什么样的技术、产品和服务将会满足自身的需求?本文...[详细]

作为程序员,你必须了解这些关于计算机的知

作为程序员,你必须了解这些关于计算机的知识

存储-块设备,文件系统,集群文件系统,分布式文件系统,光纤SCSI,iSCSI,RAID等。 ...[详细]

返回首页 返回顶部