危险的API

  1. 概述

在前面的安全编码实践的文章里,我们讨论了GS编译选项,<wbr>数据执行保护</wbr>DEP功能,以及静态代码分析工具Prefast。<wbr>这里,我们讨论在</wbr>C/C++代码中禁用危险的API,<wbr>其主要目的是为了减少代码中引入安全漏洞的可能性。</wbr>

  1. 那些是危险的API

2.1历史

在微软产品的安全漏洞中,有很大一部分是由于不正确的使用<wbr>C</wbr>动态库(C Runtime Library) 的函数,特别是有关字符串处理的函数导致的。<wbr>表一给出了微软若干由于不当使用</wbr>C动态库函数而导致的安全漏洞【<wbr>1</wbr>,p242】。

微软安全公告 涉及产品 涉及的函数
MS02-039 Microsoft SQL Server 2000 sprint
MS05-010 Microsoft License Server lstrcpy
MS04-011 Microsoft Windows (DCPromo) wvsprintf
MS04-011 Microsoft Windows (MSGina) lstrcpy
MS04-031 Microsoft Windows (NetDDE) wcscat
MS03-045 Microsoft Windows (USER) wcscpy

表1:不当使用C动态库函数而导致的安全漏洞

不当使用C动态库函数容易引入安全漏洞,这一点并不奇怪。<wbr>C</wbr>动态库函数的设计大约是30年前的事情了。当时,<wbr>安全方面的考虑并不是设计上需要太多注意的地方。</wbr>

2.2 危险API的列表

有关完整的危险API的禁用列表,大家可以参见http:<wbr>//msdn.microsoft.com/en-us/<wbr>library/bb288454.aspx</wbr></wbr>.

在这里我们列出其中的一部分,以便大家对那些API被禁用<wbr>有所体会。</wbr>

禁用的API 替代的StrSafe函数 替代的Safe CRT函数
有关字符串拷贝的API
strcpy, wcscpy, _tcscpy, _mbscpy, StrCpy, StrCpyA, StrCpyW, lstrcpy, lstrcpyA, lstrcpyW, strcpyA, strcpyW, _tccpy, _mbccpy StringCchCopy, StringCbCopy,

StringCchCopyEx, StringCbCopyEx

strcpy_s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值