使用全局变量编写程序更安全吗?

0x9*_*x90 2 c c++ overflow

我正在阅读缓冲区,堆栈和堆溢出.我也读了这篇文章.我的问题是这样的:如果我在代码中只使用全局变量,我可以说它可以防止溢出的所有漏洞吗?

假设我在全局范围内声明的代码中有这个缓冲区:

char buf1[10];
char buf2[100];
Run Code Online (Sandbox Code Playgroud)

如果我buf1作为缓冲区发送到recv(int s, char *buf, int len,int flags);

  1. 我会覆盖数据段并可能破坏buf2内容,对吧?
  2. 我是否能够从中运行代码,因为我知道它不是代码段,而且数据段不可执行.

我们能否得出结论,使用Globals是最安全的方式?

Oli*_*rth 7

一点都不.虽然更难直接修改堆栈上的返回地址等,但仍然可能破坏或恶意攻击这样的程序(如果它不关心缓冲区溢出).