2008-10-01 43 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”。