由于JVM中的问题,Java中的缓冲区溢出问题主要有机会发生。
除此之外,开发人员代码是否有可能容易受到BUFFER OVERFLOW的攻击? Esp在定制的基于java / nee的Web应用程序中?
答案 0 :(得分:1)
如果您(或您使用的库)不在Java应用程序中使用JNI(本机)代码,并且所有JVM函数都没有错误(过去存在类似于媒体解析的错误)那么您就不会#39 ; t需要担心传统的缓冲区溢出。这基本上适用于所有"托管代码"运行时和最大的优势之一。
但是,您仍然可以溢出数据结构。这不会导致严重的堆或堆栈损坏,但可能会导致拒绝服务,信息泄露或逻辑问题。
示例很简单:
void test() {
char[] c = new char[10];
c[11] = '1'; // or 10
}
如果您尝试此方法,它将抛出ArrayIndexOutOfBounds
异常而不写入内存位置。事实上,如果您阅读Java Language Spec。
* 如果....
,这是一个大的