我正在讀緩衝區,堆棧和堆溢出。我也讀了這個post。我的問題是這樣的:如果我在代碼中只使用全局變量,我可以說它可以防止所有的溢出攻擊?使用全局變量編寫程序更安全嗎?
讓我們說我有這樣的緩衝,在全球範圍內聲明的代碼:
char buf1[10];
char buf2[100];
如果我發送buf1
作爲緩衝,以recv(int s, char *buf, int len,int flags);
- 我將覆蓋數據段,可能破壞
buf2
的內容吧? - 我能否從中運行代碼,因爲據我所知它不是代碼段,數據段不可執行。
我們可以得出結論:使用Globals是最安全的方法嗎?
最安全的方式是不超過緩衝區_。 – 2012-04-09 17:03:41
國際海事組織,這大致相當於當你25歲時自殺,以確保當你變老時不致死於癌症。 – 2012-04-09 17:05:00
只要你爲'len'傳遞正確的值,你就不會溢出你的緩衝區。 *這不是一個困難的概念*。 – 2012-04-09 17:10:41