用户名: 密码: 免费注册 忘记密码? 网站地图 | 加入收藏 | 设为首页
首页 | 新闻 | 工具 | 系统 | 办公 | 聊天 | 多媒体 | 网页 | 运营 | 平面 | 欣赏 | 数据库 | 程序 | 服务器 | 组网
网页 | 3dmax | Ghost | Windows Xp| Dreamweaver | photoshop | Flash | office | Alexa | Css | QQ | Asp | PHP | Jsp | Access
Flash MX 2004入门 | 网站推广策略 | CorelDRAW入门 | ASP学习 | 网站建设大师功 | Word入门
  iTbulo.com > 学院 > 正文
面对恶意代码,我们告别以前处理的方法
iTbulo.COM 2006-4-4 佚名()

C++ 中的情况

Visual C++ 小组并未停止使用 C 运行库。对于标准模板库 (STL),有许多众所周知的事实。您知道使用迭代程序能够使缓冲区溢出吗?许多安全性方面的风险都与不恰当地使用了迭代程序有关,使用当迭代超出有效范围时中止运行(或出现异常)的迭代程序可以消除这一风险。下面是一个示例:

#include <vector>

vector<int> v(10);// 向量大小为 10

v[20] = 10; // 出现缓冲区溢出

vector<int>::iterator it = v.end();

// 超出界限后导致缓冲区溢出

++it;

#define _SECURE_SCL (1) 编译这段代码后,可以使所有的迭代程序进行检查范围的操作。

也可以不使用新添加的 #define,而使用新功能来达到相同的目的。例如,以下代码将不会导致溢出:

vector<int> v(10);// 向量大小为 10

stdext::checked_iterator<vector<int> > ck_it(v, v.end());

// 超出界限后将中止程序

++ck_it;

其他升级的类和方法有 operator[](vector、string、deque、bitset classes 等), front 和 back(vector、queue、list 类等)。此外还更新了各种算法,包括 copy、copy_backward、*_copy、transform、fill、set_* 等等。

标准的变化

看到这里,您可能会想,标准有什么变化吗?C 和 C++ 不符合标准吗?不,它们已经标准化,并且 Microsoft 已将最新的草案提交给标准化委员会。可以转到 http://std.dkuug.dk/jtc1/sc22/wg14/www/docs/n1031.pdf 查看此草案。

小结

我确实很高兴使用新的运行库。虽然它不能显著提高代码的安全性,但它却是防止缓冲区溢出的又一个工具。在即将结束之际,我要感谢 Visual C++ 库开发小组出色地完成了这一任务,尤其要感谢 Martyn Lovell 对写作本文档提供的帮助。

“以往的 CRT 大势已去,愿新的 CRT 焕发生机!”

发现安全漏洞

许多人帮助我最后改正了错误。早在这篇文章之前,答案就已明确。所谓“安全的” strncpy 并不检查参数是否为 NULL,它能够导致您的应用程序死机或非法访问。

好,看一下本月的问题。这段代码有什么问题?

void ReadDataFromFile(char *szFilename,

LPOVERLAPPED_COMPLETION_ROUTINE func) {

HANDLE hFile = CreateFile(szFilename,

FILE_ALL_ACCESS,

FILE_SHARE_READ,

NULL,

OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL |

FILE_FLAG_OVERLAPPED,

NULL);

OVERLAPPED io;

memset(&io,0,sizeof OVERLAPPED);

DWORD dwWritten=0, dwRes=0;

// 执行读取操作

const size_t cBuff = 1024;

char buff[cBuff];

if (!ReadFileEx(hFile,buff,cBuff,&io,func)){

// 哦!保证!

}

// 其他代码

}

Michael Howard 是 Microsoft Secure Engineering 小组的高级安全程序经理,是 Writing Secure Code 的作者之一,现在正在进行该书新版本的写作,他还是《Designing Secure Web-based Applications for Windows 2000》的主要作者。他的主要工作就是确保人们设计、构建、测试和介绍无缺陷的安全系统。他最喜欢的话是“尺有所短,寸有所长”。

上一页  [1] [2] 

文章搜索
相关资讯
相关文章 相关下载
微软恶意代码剥离工具保护Office
专家警告:恶意代码潜伏于网页缓存
网页恶意代码程序讲解
焦点信息