在當今信息社會,計算機和互聯網已成為人們工作和休閑不可缺少的工具。業余時間,人們通過電腦聊天、娛樂和看電影。在工作中,人們會利用計算機和網絡處理公文、傳遞公文,甚至開展金融業務。
? ? ? ?因此,黑客有機會利用系統中的漏洞專門開發某些程序。通過添加一系列匹配參數,它們將獲得對我們計算機的控制,監視我們的隱私,竊取我們的信息,甚至給我們帶來名譽和財產損失。在專業領域,由于程序員的不足而導致的系統漏洞稱為溢出。
溢出有幾種類型,一種是緩沖區溢出,另一種是內存溢出,另一種是數據溢出。三種溢出對每個計算機用戶都是非常有害的。今天,編輯重點介紹內存溢出的一些基本知識。
可以說,自從軟件開發以來,內存溢出就一直存在,隨著軟件開發的發展到現在,它已經成為歷史上存在了幾十年的一個大問題,也成為黑客攻擊個人電腦、窺探企業機密等性能的最大罪魁禍首在內存溢出的紅色代碼病毒事件中,引起了當時業界的恐慌。
而且,根據相關安全部門的調查統計,操作系統中一半以上的安全漏洞是由內存溢出造成的,這些漏洞大多與微軟技術密切相關。
雖然微軟的軟件是為臺式機開發的,但如果不連接互聯網,內存溢出不會帶來嚴重后果,但問題是,目前,網絡已經成為個人或企業不可或缺的一部分。內存溢出已成為黑客攻擊的最有利助手。
內存溢出是由多種問題引起的,一是使用C或Category+等非類型安全語言,內存溢出可以說是C或C+語言無法克服的缺陷,因為它們不檢查數組邊界,也不檢查類型的可靠性。他們開發的程序的目標代碼與機器內核的目標代碼非常接近,因此他們可以直接訪問寄存器和內存,這可以大大提高C或C+語言代碼的性能,在執行效率上有優勢,但也更容易造成內存溢出問題。
其次,以不可靠的方式訪問或復制內存緩沖區,簡而言之,如果將16毫升的溶液倒入只能容納12毫升的試管中,那么額外的4毫升溶液將自然溢出。
第三,編譯器設置的內存緩沖區離鍵數據結構太近,假設一個函數的堆棧與內存緩沖區緊密相連,那么保存的函數返回地址將與內存緩沖區相鄰。
黑客可以將大量數據復制到內存緩沖區,從而使內存緩沖區溢出,并覆蓋先前存儲在堆棧中的函數的返回地址,造成損失。
那么如何為程序員預防和解決這個問題呢?
? ? ? 有兩種措施。一是在用CAccord+編寫代碼時,要注意處理用戶數據的方式。當函數的數據源不可靠且同時使用內存緩沖區時,則必須嚴格遵循1、必須獲得內存緩沖區的總長度。2、驗證內存緩沖區。3、從源代碼開始要保持警惕。第二個措施是使用一些新技術,因為幾乎不可能指望程序員永遠不會出錯,所以現在已經開發了一些新技術,如基于檢測的方法、堆棧防御、分段控制和數據堆棧,它允許底層系統自動保護程序不受內存溢出的影響。