我正在阅读有关缓冲区、堆栈和堆溢出的信息。我也读了这篇文章。我的问题是这样的:如果我在代码中只使用全局变量,我可以说它可以防止所有溢出漏洞吗?
假设我在全局范围内声明的代码中有这个缓冲区:
char buf1[10];
char buf2[100];
如果我buf1
作为缓冲区发送到recv(int s, char *buf, int len,int flags);
- 我会覆盖数据段,可能会破坏
buf2
内容,对吗? - 我是否能够从中运行代码,因为我知道它不是代码段并且数据段不可执行。
我们可以得出结论,使用 Globals 是最安全的方法吗?