musicbug 发表于 2004-5-8 15:14

Visual Studio 2005会引入新C运行库程序

Visual Studio 2005会引入新C运行库程序
(2004.05.01)   来自:BUILDER.COM   




有些C运行库程序比其它一些程序更安全,这并不是秘密,这仅仅基于他们假定想要做的是什么,甚至在那些看起来很安全的程序中也存在着一些错误和弱点,这也是事实。

迈克尔.霍华德是微软的一位高级安全工程师,近来他概述了一项正在进行的方案,这一方案旨在使C更安全。这一方案最开始的起因是strsafe.h,它是微软在2002年Visual Studio .NET 2003和软件开发工具包(SDK)平台中提出的字符串处理函数。(在以后的专栏中我将会为你提供更多的关于strsafe.h的详细资料。)
微软的Visual C++工作团队正在按我提议的步骤进行,开发者们也会遵从。这一团队正在评估运行库函数的安全性。然而,他们所做的是单个的开发者所远远不能做到的,比如说,为了使它们的运行更安全,他们重写了大约400个程序。

新的C函数将在Visual Studio 2005中首次登场,有几个函数将会仅仅通过重新编译来改善原来的编码。但是,正如霍华德所指出的,要让大多数编码安全,仅仅靠改良库是不行的,还需要注意利用最安全的功能和实践。

新的编译将会使以前的函数命名更适用,一些旧有的功能将会得到明显改善。但是你需要改变旧的编码,或者调整编译器设置来编译旧的编码,这是因为新的编译器在发现旧的不安全函数版本时将会抛出错误,微软已经发布了这两种可选择的办法。Visual Studio 2005编译器将会向你展示你应该考虑改变哪些编码,也要获取使用了与重新命名函数最棒的实践相符合的编码,甚至会通过在旧库中修改一些问题来使其更安全。


由于新库还处于发展和测试阶段,一些改变是在所难免的。然而,霍华德在他的论文中引用了一些有趣的重要变化,我怀疑这些变化将会以类似或相同的形式在最终版本中出现,诸如:

Calloc使用更多的参数检查,它将会保持同样的函数名。
Strncat是一项很棘手的函数,他同strncat_s函数一样得到了全面的修正。还有一个新的函数strncpy_s,在新的版本中,两者有着相似的新的署名:
    --他们返回一个错误的编码(errno_t)而不是一个指示器。

       --目的文件缓冲(char*)。

--目的文件缓冲的总体特征的数量(size_1)。

--源缓冲(const char). 

--源缓冲的总体特征数量(size_1)。

新的缓冲记数器排除了“需要保持一个正在进行的目的文件缓冲的记数器”,包括函数“遇NULL字符串时终止”和改良输入参数的检查这个特性。



新的C++同样将包括对标准模板库(Standard Tmplate Library)的一些改变(修正),假若你误用了迭代器的话这些改变通常会导致缓冲器的泛滥。



我认为微软现在所做的是正确的。因为对这些运行库作了一些主要的改变,使用C的开发者们应该对即将面世的Visual Studio 2005给予充分的关注。微软已经把它所提议要作的改变提交给了标准委员会。点击这里你可以看到递交申请书的副本。那三十页文档详细讲解了一些标准功能调用的变化。

现今,C已像恐龙一样古老,如果不是因为它具有让人难以置信的功能,我们当然不会再用它。C一直以来都是主要的安全检查所需要的,初看时,好像微软朝着正确的方向迈进了一大步。我到目前还不能认可 Visual Studio 2005,这是因为它还没有最终定案,也还不能用来进行测试。但是初步的信息预示着 Visual Studio 2005的引入将会使发展安全应用容易得多。
页: [1]
查看完整版本: Visual Studio 2005会引入新C运行库程序