企业新闻

安全编码原则之避免缓存溢出

2018-04-08 20:10:23 | 来源:中培企业IT培训网

2. 避免缓存溢出

缓冲区溢出是指当计算机向缓冲区内填充数据时超过了缓冲区本身的容量,溢出的数据覆盖了合法数据。当软件程序对输人数据长度检查不够,并且允许超过长度的数据存储到缓冲区中,则会导致缓冲区溢出发生。缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统崩溃、系统被恶意控制等后果。

c和C++的语言允许程序员随意处置指针和数组,并且将对缓冲区(如数组)的边界检查工作交给程序员来处理。如果在程序将输人数据读人或复制到缓冲区中的时候,安全经验不足,或者轻易相信输入数据,程序员不会主动编写代码来检查目标空间是否足够,就容易产生缓冲区溢出。

同时,C和C++附带了大量基础库,这些库中存在容易导致缓冲区溢出的危险函数,即基础库中的大量函数在拷贝数据的时候也缺乏对目标缓冲区空间的检查。因此,在软件程序中,使用这些函数时需要非常慎重。

尽管除了C和C++外的其他高级编程语言加强了对缓冲区溢出的防护,增加了一些保护机制,如主动对缓存边界进行控制,但是并不能说使用其他语言就不存在缓冲区溢出的危险。一方面由于C语言具有使用广泛、功能强大且高效灵活等特性,许多其他高级编程语言依赖于使用C语言库,另一方面有些高级编程语言出于高效运行的考虑,允许程序员关闭该缓存溢出保护特性的机制,因此,不管使用哪种语言,开发人员需要提高安全意识而避免出现缓冲区问题。

标签: 避免缓存溢出

猜你喜欢