
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习软件编程开发相关的技术知识,而本文我们就通过案例分析来简单了解一下,软件开发安全性问题都有哪些。
内存错误
内存读取错误会因为泄露敏感信息对机密性和完整性带来潜在的威胁,而内存写入错误则因为会改变工作流而对机密性、完整性和可用性都带来影响。比较常见的内存问题有缓冲区溢出、缓冲区不足和释放重利用。这些问题难以检测,甚至存在于一些经过反复测试,被认为是安全的代码里,因此即使是有经验的程序员也难免会产生这些问题。尽管说一些代码标准被启用,试图减少内存错误,但是显然不那么有效。因此,在开发周期早期,需要深度静态分析、数据流分析、符号执行等方式检测内存错误。
编程错误
这类错误主要由C/C++的错误使用引起,比如未初始化变量、重复释放指针、以及间接在征兆数据和非征兆数据之间进行变化等。编程错误中有一部分会被利用进行攻击,而且即使这些错误会导致程序崩溃,可能也不会在功能测试和回归测试中显现出来。然而,它们确实会在部署的系统中引起严重问题。静态额分析可以识别在编程语义中存在的代码错误和歧义。
有风险的函数调用
有一些API函数被认为是有隐患,不安全的。比如C/C++中的gets()函数,就很容易产生目标地址的缓存溢出问题。其他函数调用也可能因为一些行为产生危害。这类有风险的函数调用很容易就在静态分析中通过风险函数列表的方式被识别。
密码学滥用
密码学在保障数据机密性的环境中尤为重要。但是,几乎没有开发人员在密码学层面是专家;更糟的是,滥用C语言本身库里的密码函数反而会导致安全问题,比如使用像DES和MD5那样的弱算法加密,或者用硬编码的密钥以及将盐数据进行哈希。密码学的滥用会影响机密性和完整性,不过他们也同样能被静态分析轻松识别。
污染数据
污染数据是指数据在进入系统时未被验证并去除有害内容,从而无法保证数据值是在合法范围。污染数据是对开发者大的挑战之一,同样也会影响机密性和完整性。人工检查很难检测到数据注入问题。
如果要解决污染数据的问题,就需要对以任何形式(比如用户、设备、sockets等等)进入系统的数据都从来源到目标进行追踪。在数据被API调用、接入数据结构、或者进入任何编程逻辑前,都需要被验证。否则,就可能产生数据注入的攻击威胁。静态分析可以在工作流中进行计算,提供简明易懂的告警保住程序员规避这些危险情况。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。