新聞中心
了解了緩沖區(qū)溢出是如何發(fā)生的以后,如何防止黑客利用緩沖區(qū)溢出攻擊并控制你的本地應用程序就是一個很重要的問題了。

創(chuàng)新互聯(lián)建站專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、榆中網(wǎng)站定制設(shè)計、自適應品牌網(wǎng)站建設(shè)、html5、成都商城網(wǎng)站開發(fā)、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應式網(wǎng)頁設(shè)計等建站業(yè)務,價格優(yōu)惠性價比高,為榆中等各大城市提供網(wǎng)站開發(fā)制作服務。
避免使用編譯器中自帶的庫文件
編程語言通常都要帶有庫文件。如果一個庫文件具有某些漏洞,任何包括該庫文件的應用程序就都會有這些漏洞。因此,黑客往往會先試圖利用常用的庫文件中已知的漏洞來達到攻擊本地應用程序的目的。
庫文件本身也不可靠。雖然最新的編譯器都開始加入大量可靠的庫文件,但長期以來庫文件為了提供了快速、簡單的方式來完成任務,幾乎沒有考慮到安全編碼的問題。C + +編程語言就是這種形式的最典型代表。而用C + +編寫的程序中依賴的標準庫就很容易在運行時產(chǎn)生錯誤,這也為希望利用緩沖區(qū)溢出進行攻擊的黑客們提供了實現(xiàn)他們想法的機會。
驗證所有的用戶輸入
要在本地應用程序上驗證所有的用戶輸入,首先要確保輸入字符串的長度是有效長度。舉個例子,假設(shè)你的程序設(shè)計的是接受50個文本字符的輸入,并將它們添加到數(shù)據(jù)庫里。如果用戶輸入75個字符,那么他們就輸入了超出數(shù)據(jù)庫可以容納的字符,這樣以來誰都不能預測程序接下來的運行狀況。因此,用戶的輸入應該這樣設(shè)計:在用戶輸入文本字符串時,先將該字符串的長度同最大允許長度進行比較,在字符串超過最大允許長度時能對其進行必要的攔截。
過濾掉潛在的惡意輸入
過濾是另一個很好的防御措施。先看下面例子中的ASP代碼:
這是從用戶的輸入中過濾掉HTML代碼,撇號和引號的代碼。
strNewString = Request.Form("Review")
strNewString = Replace(strNewString, "&", "& amp;")
strNewString = Replace(strNewString, "<", "& lt;")
strNewString = Replace(strNewString, ">", "& gt;")
strNewString = Replace(strNewString, "'", "`")
strNewString = Replace(strNewString, chr(34), "``")
上面的代碼用于目前我正在開發(fā)的電子商務網(wǎng)站中。這樣做的目的是為了過濾掉可能會導致數(shù)據(jù)庫出現(xiàn)問題的HTML代碼和符號。在HTML代碼中,使用"<"和">"的符號來命名一個HTML標簽。為了防止用戶可能會在他們的輸入里嵌入HTML代碼,因此程序過濾掉了"<"和">"符號。
在ASP代碼中,撇號,引號和連字符都是保留符號。這些保留的符號不可以包括在用戶的輸入中,否則它們會導致應用程序崩潰。例如,如果用戶輸入一個文本行中只使用了一個撇號,之后登陸數(shù)據(jù)庫時,這個命令將會失敗,因為ASP需要利用成對的撇號將文本括起來提交到數(shù)據(jù)庫里;ASP不知道如何處理用戶的輸入中的撇號。為了防止這種情況發(fā)生,以上的代碼可以尋找到輸入字符串中的撇號,并以“'“替代它。
測試應用程序
為了保護程序免受緩沖區(qū)溢出的攻擊,驗證和過濾用戶的輸入已經(jīng)實施很久了。但在部署應用程序之前,你仍然需要對它進行全面徹底的測試。應當有專門的人來仔細地審查應用程序,并試圖使它們崩潰。讓他們嘗試輸入長的字符串或保留字符。如果你的應用程序在編寫中已經(jīng)做了足夠的工作,它應該能應付各種各樣的情況。如果程序崩潰了,最好馬上把問題找出來,而不要等到已經(jīng)應用之后。
網(wǎng)站名稱:防止緩沖區(qū)溢出攻擊的策略
新聞來源:http://m.5511xx.com/article/djshdjj.html


咨詢
建站咨詢
