2011-05-05 72 views

回答

1

如果你有在運行時,所有緩衝區的訪問是有效的檢查編程語言,你怎麼能拿一個緩衝區溢出?有很多這樣的語言(例如Java)。

更實際的問題是,是否有任何Web服務是完全(從下到上)以這種方式實現的?我對此表示懷疑;大多數都建立在操作系統之上,通常用C語言編寫,並且存在弱點。你沒有實際的擔憂,因爲你的操作系統(或者你的Java運行時)的機制沒有隱藏的緩衝區溢出。

您可以做的一件事是將您的「無緩衝區訪問檢查」編程語言轉換爲「已檢查」的語言,如果不報告就不會出錯。請參閱我們的CheckPointer,這是一款爲C語言編寫的工具。目前,該工具在生產環境中使用並不實用,因爲它增加了相當多的開銷。然而,有希望;有一些研究項目產生的程序無法在自己的記憶之外訪問,但交易功能正確性/準確的性能報告,而且這些項目的開銷非常低。最終,這些方法很可能會用於較低層的軟件,以確保它們不會導致問題。

+0

您是否有任何證據(其實現源代碼)Java在運行時檢查所有緩衝區訪問? – 2011-07-30 07:32:59

+0

我個人?不,我從來沒有看過。我相信Java規範要求檢測和報告任何錯誤的數組索引操作,空對象訪問的檢測和報告等。因此,如果Java語言實現者沒有正確執行它的工作,則不應該有Java編程的錯誤訪問。他們可能會在語言層面混淆,但是對於這個問題的Java實現,我會感到非常驚訝。現在,Java機器(可能內置在C中)具有緩衝區和其他內部結構;很可能沒有保證這些訪問總是被檢查。操作系統...? – 2011-07-30 09:05:35