服務器內(nèi)存溢出是什么
在信息化社會的今天,電腦與網(wǎng)絡已經(jīng)成為人們在工作和休閑中不可或缺的工具,閑暇時人們通過電腦聊天、娛樂、看電影,工作時人們更會用電腦和網(wǎng)絡來處理公文、傳送文件、甚至進行財務上的業(yè)務。于是,便給了黑客可乘之機,他們利用系統(tǒng)的漏洞,專門開發(fā)某種程序,在通過添加一系列匹配的參數(shù),就會取得我們電腦的控制權,窺探我們的隱私,盜取我們的信息,乃至給我們帶來名譽和財產(chǎn)上的損失,這種程序設計者設計時帶來的不足造成的系統(tǒng)漏洞在專業(yè)領域就稱為溢出。
溢出分類有幾種,一是緩沖區(qū)溢出,二是內(nèi)存溢出,還有一種是數(shù)據(jù)溢出。三種溢出對每個電腦用戶的危害都是很大的,小編今天著重給大家介紹下內(nèi)存溢出的一些基本知識。
可以說,自軟件開發(fā)出來,內(nèi)存溢出就已經(jīng)存在了,并跟隨軟件開發(fā)的發(fā)展到了現(xiàn)在,成為了一個歷史上存在了幾十年的大難題,它也成為了黑客攻擊個人電腦,窺探企業(yè)機密的最大禍首,著名的比如內(nèi)存溢出在紅色代碼病毒事件中的表現(xiàn),當時引起業(yè)界一片恐慌。
而且,根據(jù)有關安全部門的調(diào)查統(tǒng)計,操作系統(tǒng)中一半以上的安全漏洞都是因為內(nèi)存溢出所導致的,同時這些漏洞絕大部分與微軟的技術緊密相關。雖然微軟的軟件都是針對的臺式機而開發(fā),如果不連通互聯(lián)網(wǎng),那么內(nèi)存溢出不會導致多么嚴重的后果,但問題是在當下,網(wǎng)絡已經(jīng)成為個人或是企業(yè)不可或缺的東西,內(nèi)存溢出就成為了黑客進行攻擊的最有利助手。
導致內(nèi)存溢出問題的是多樣的,一是使用了C或C++ 等非類型安全的語言,內(nèi)存溢出是 可以說是C語言或C++ 語言難以克服的缺陷,因為它們不檢查數(shù)組邊界,也不檢查類型的可靠性。它們開發(fā)的程序的目標代碼與機器內(nèi)核十分接近,所以可以直接訪問寄存器和內(nèi)存,這樣固然可以大大提升 C或C++ 語言代碼的性能,在執(zhí)行效率上占據(jù)優(yōu)勢,但是導致內(nèi)存溢出問題的概率也要高許多。
二是存取或者復制內(nèi)存緩沖區(qū)采用了不可靠的方式,簡言之,就是向只能盛12毫升的試管中倒入了16毫升的溶液,那么多出來的4毫升溶液自然就會溢出了;
三是編譯器設置的內(nèi)存緩沖區(qū)與關鍵數(shù)據(jù)結構相鄰過于緊密,假設某個函數(shù)的堆棧與內(nèi)存緩沖區(qū)緊密相連,那么保存的函數(shù)返回地址就會與內(nèi)存緩沖區(qū)相鄰。黑客就可以復制大量數(shù)據(jù)到內(nèi)存緩沖區(qū),這就使得內(nèi)存緩沖區(qū)溢出并將原先保存于堆棧中的函數(shù)返回地址覆蓋掉,造成損失。
那么對于編程人員來說怎么預防和解決這個問題呢?有兩種措施,一是在用 C/C++ 書寫代碼時,應該處處留意處理來自用戶的數(shù)據(jù)的方式,當一個函數(shù)的數(shù)據(jù)來源不可靠,同時又用到內(nèi)存緩沖區(qū)時,那么它就必須嚴格遵循1.必須得到內(nèi)存緩沖區(qū)的總長度;2.檢驗內(nèi)存緩沖區(qū)3.從源代碼開始提高警惕。第二種措施是,利用一些新技術,因為指望程序員永不犯錯幾乎是不可能的,那么現(xiàn)在開發(fā)了一些新技術如基于探測方法、堆棧防御、分割控制和數(shù)據(jù)堆棧等讓底層系統(tǒng)自動保護程序以避免內(nèi)存溢出的問題。
總而言之,雖然當今黑客頻頻攻擊,系統(tǒng)漏洞很多,但是我們還是要相信通過不斷的努力,可以將入侵者擋在安全門之外,放心的用電腦和網(wǎng)絡這個大家工作和生活中的好幫手啦!
服務器內(nèi)存溢出是什么
上一篇:網(wǎng)絡存儲器怎么用