C和C++安全编码(原书第2版)
上QQ阅读APP看书,第一时间看更新

2.3 字符串漏洞及其利用

前面一节描述的是在C或C++中操作字符串常见的错误。当代码对源于外部的不受信任的数据(如命令行参数、环境变量、控制台输入、文本文件和网络连接)进行操作时,这些错误就会变得很危险。根据程序的使用和部署情况,外部数据可能受信任或不受信任。然而,软件可以使用的所有方式往往是很难预测的。通常在部署代码时,在开发过程中所作的假设不再有效。假设的改变,是一种常见的漏洞来源。因此,将所有外部数据都当作不可信的是更安全的做法。

在软件安全分析领域,一个值称作被污染的,如果它的来源是不受信任的(程序的控制之外),并且没有被净化,以确保它符合该值的使用者要求的任何约束,例如,所有的字符串都要求是空字符结尾的约束。