拷贝构造函数和拷贝赋值运算符安全漏洞分析
时间:2011-11-06 18:33 作者:小编 点击:
次
++作为现在较为流行的开发工传奇网游具,在程序开发中占有举足轻重的地位,所以研究,++程序的安全漏洞问题,详细地对安全漏洞进行归类并分析原因及提出相关建议是一项很必要有意义的工作。本文主要是结合—和++国际标准。从,++语言机制的多个方面粗略提出了,++程序中拷贝构造函数和拷贝赋值运算符的常见、典型的安全漏洞,并深入研究了++程序中异常方面的安全漏洞。设计实例说明程序安全漏洞的存在与危害,分析实例引发漏洞的原因,并提出如何避免漏洞发生的可行性建议方案。希望以此以达到指导程序员在软件开发过程中安全地使用++程序、避免可能出现的安全漏洞之目的。关键词:安全漏洞;指针;拷贝构造函数;拷贝赋值运算符;异常(-",)(钿710061),++,++...++.++++,++.—,.++,.;;;;概述在++语言程序设计中,如果某个类的对象持有动态分配的内存资源,但是程序员却没有为该类定义拷贝构造函数和拷贝赋值运算符,则当对象拷贝构造(新对象尚未存在)和对象拷贝赋值(对象已经存在)时,编译器会为该类自动生成上述两个函数。但是自动生成的函数只具有按位拷贝复最新传奇制语义功能,这样会给程序带来安全隐患,可能出现内存泄漏、重复释放内存等诸多问题。如果程序员定义了拷贝构造函数和拷贝赋值运算符中任何一个,就意味着程序员放弃了默认的按位拷贝复制语义。
通常情况下的初始化复制和对象存在情况下的状态复制总是遵循相同的操作方式,因此如果程序员重新定义了其中任何—个函数,而未定义另外一个,就无法保证复制语义的一致性。如果程序员对拷贝构造函数和拷贝赋值运算符定义不恰当,就有可能出现对象复制语义错误等问题。
2漏洞表现漏洞的主要表现形式分为以下三类:(1)拷贝构造函数和拷贝赋值运算符未被定义。(2)拷贝构造函数和拷贝赋值运算符定义不配对。(3)拷贝构造函数和拷贝赋值运算符定义不恰当。
3典型漏洞实例分析与建议本文收稿日期:2008年5月6日一76一在拷贝构造函数和拷贝赋值运算符安全漏洞传奇文章的主要表现形式中,“拷贝构造函数和拷贝赋值运算符定义不恰当”会引起对象复制语义错误等问题。本节为这一类漏洞表现形式设计并分析了一个漏洞实例—拷贝赋值运算符中内存释放和重分配操作不当。3.1漏洞描述当使用拷贝构造函数拷贝构造对象时,因为新对象还未存在,所以不用释放和重新分配内存资源。而当使用拷贝赋值运算符对对象执行拷贝赋值操作时,因为新对象已经构造完毕,所以该函数的定义中必须对被赋值对象执行释放和重新分配内存的操作。如果拷贝赋值运算符未准确地执行上述操作,就会导致内存泄漏和重复释放内存等错误。
3.2漏洞实例注:以下代码是该漏洞实例的总体框架,拷贝赋值运算符被定义在后面的三个实例中。;:计算机安全技术肭造函数为类对象动态分配空间,并执行初始化操作-+;(,);-1;=;))(鹏季贝构造函数为类对象动态分布空间,并执行初始化操作=(.)+;(,.);=:-[;,析构函数为类对象释放内存空间;:+;;(””);2”);2=;2.0应网游这一点应该这样;:实例1:未对被赋值对象执行释放和重新分配内存的操作,而是直接采用对其数据成员赋值的方式进行赋值操作。::===)+;仃(传奇网,.);+;)实例2:对被赋值对象执行了释放内存操作,但是未对其重新分配内存::=(==)+;[;缸(,.);+;实例3:未对被赋值对象执行释放内存操作,但却对其重新分配了内存::=(=)+;-仃(.)+1;(,.);+;)3.3漏洞原因分析在实例1中,程序员在实现类的拷贝赋值运算符时没有对被赋值对象执行释放和重新分配内存的操作,当函数执行到语句”2=;”时,内部数据指针指向的字符串的长度超出了对象2被分配的堆内存空间所能容纳酌范围,从而造成数据访问越界错误。在实例2中,程序员在实现类的拷贝赋值运算符时虽然释放了被赋值对象占有的内存,但却没有为其按照赋值对象的数据大小重新分配内存,造成被赋值对象的内部数据指针不再指向合法的堆空间。当执行传奇文章字符串复制操作时,程序出现了非法访问内存空间的错误。在实例3中,程序员在实现类的拷贝赋值运算符时在没有释放被赋值对象占有的内存的情况下,为其重新分配了内存,造成被赋值对象原先持有的堆内存被丢弃,并且再也无法被释放,从而导致内存泄漏。
3.4安全编程建议如果++中某个类的对象持有非自动释放的资源(如堆内存空间、文件描述符)时,程序员应当为该类按照如下顺序实现拷贝赋值运算符:(1)保存原先的资源。
(2)分配新的资源。(3)执行句柄赋值操作。(4)释放原先的资源。以下给出了上述漏洞实例中拷贝赋值运算符的一个正确实现:::=-(=)。;-;,保存原先的资源+-缸(.)+;,分配新的资源(,.);-;鹏行句柄赋值操作;朋犟放原先的资源+;。
上一篇:基于VisualBasic6.0打字练习软件设计
下一篇:科技期刊编辑网络应用能力的构成及培养策略
相关文章列表
电脑蓝屏故障及解决对策探究
利用VBA实现Word文档的批量拆分与合并
知讲很多匪弃情报的手段
手机游戏聊斋系列作《聊斋之媚狐传》再续人狐前世姻缘
120为了爱我选择人妖之路-4
他们不会讲的
小兄是侧式的侧
回家开饭店——二千多道菜的做法(不收藏会后悔的)
锐给玩家钱
浅谈电脑式压力机吨位计的设计
2010年CES大展聚集奇思妙想的电子新品
这就是了
玩家说着看着宰我不给理由身前的麻痹不仁
10月6日
女人被强奸之后.....
X360入手
占弃最坏角度
接着一阵红光闪过
真不错的私服
鱼雷领射没返
引认为鉴的感到