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

三、确认 安全 的软件库 如今,为不同语言和目的而开发的各种 安全 的软件库已经不少了。其中的许多软件库都是为C和C++语言开发的,提供了针对容易被误用的标准库函数的替代代码: 安全 软件库的类型:开发团队必须

三、确认安全的软件库

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

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

(责任编辑:闫小琪)

顶一下
(2)
100%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
图片资讯

针锋相对 四招防御APT攻击

针锋相对 四招防御APT攻击

APT即“Adavanced Persistent Threat”,是指针对明确目标的持续的、复杂的网络攻击。...[详细]

浏览器必备的五大安全附加组件

浏览器必备的五大安全附加组件

随着云计算和基于Web的业务应用程序的兴起,尽可能的保证浏览器安全已成为关键。并非...[详细]

未来无线路由需要改进的地方

未来无线路由需要改进的地方

对于一般人来说,现有无线路由器的主要目是让手机和平板等设备连上网络,方便自己在特...[详细]

怎样在不同网络安全需求下创建DMZ区

怎样在不同网络安全需求下创建DMZ区

安全区的定义在建立安全网络过程中起着至关重要的作用。DMZ (Demilitarized Zone)是网...[详细]

教你如何利用Wireshark监测无线网络

教你如何利用Wireshark监测无线网络

计算机安全始终是一个让人揪心的问题,网络安全则有过之而无不及。无线网络是黑客们最...[详细]