2008-10-01 16 views

回答

7

除非您利用網絡服務器或.NET/ASP.NET堆棧本身。

+0

你能解釋一下嗎? – 2008-10-01 06:31:10

+0

如果您的代碼已完全託管,則無法緩衝您寫入的代碼溢出。但是構建在頂層的堆棧(.NET等)不是用純託管代碼編寫的,所以即使它很小,也有可能利用這些。 – 2008-10-01 06:41:39

8

在一般情況下,您不必擔心緩衝區溢出。這是託管代碼的主要優勢之一,垃圾收集也許是另一個主要優勢。你應該知道的幾個邊緣情況 - 任何時候你的託管代碼與非託管代碼交互(Win32 API調用,COM互操作,P/Invoke等),非託管的緩衝區溢出代碼,基於從託管代碼傳入的參數。

也被標記爲「不安全」的代碼可以直接操縱內存地址,從而導致緩衝區溢出。不過,大多數C#代碼都是在不使用「不安全」關鍵字的情況下編寫的。

0

我有一個工具(HP Dev Inspect)在我的ASP.NET應用程序中檢測到可能的「可能的參數緩衝區溢出」,這是因爲我們的TextBoxes中沒有MaxLength =「20」。