完全托管的asp.net c# web应用程序中是否可能发生缓冲区溢出?

12

完全托管的asp.net网站是否存在缓冲区溢出漏洞?如果有,如何进行测试?

3个回答

8
在一般情况下,您不需要担心缓冲区溢出。这是托管代码的主要优势之一,垃圾回收可能是另一个主要优势。
但是,有一些特殊情况需要注意 - 每当托管代码与非托管代码交互(Win32 API调用、COM互操作、P/Invoke等),根据从托管代码传递的参数,非托管代码中存在缓冲区溢出的风险。
此外,标记为“不安全”的代码可以直接操作内存地址,从而导致缓冲区溢出。但大多数C#代码都是在不使用“不安全”关键字的情况下编写的。

7

除非您利用Web服务器或.NET/ASP.NET堆栈本身。


如果你的代码完全受管理,那么就没有办法缓冲区溢出你编写的代码。但你所建立在之上的堆栈 (.NET等) 并不完全是纯受管理代码编写的,因此即使可能性很小,仍存在利用它们的可能性。 - Serafina Brocious

0

我使用工具(HP Dev Inspect)检测到我的ASP.NET应用程序可能存在“可能的参数缓冲区溢出”,原因是我们在一个文本框中没有设置MaxLength =“20”...


2
不同类型的缓冲区溢出,嗯,有点类似。如果您的文本框值未经检查地传递给 SQL 参数,可能会造成严重后果 - 或者如果它被传递到一个未预期接受整个“克苏鲁的呼唤”文本作为参数的函数中,它可能会表现不佳。请注意,精明的用户(例如使用 FF 的 Web Developer 扩展的用户)可以关闭 MaxLength。这是一种方便的防御措施,而不是您应该依赖的东西。如果用户输入的长度很重要,您应该始终检查它。 - Broam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接