|
|
1
114
由于Java字符串基于char数组,Java会自动检查数组边界,因此缓冲区溢出只可能在异常情况下发生:
|
|
|
2
28
Java和C#等托管语言没有这些问题,但实际运行代码的特定虚拟机(JVM/CLR/等)可能会出现这些问题。 |
|
|
3
13
出于所有意图和目的,没有。
Java有数组
bounds checking
其将检查数据不能从所分配阵列之外的区域访问。当试图访问超出数组大小的区域时
如果存在缓冲区溢出,则可能是由于Java虚拟机中的错误造成的,据我所知,这不是Java语言规范或Java虚拟机规范中编写的预期行为。 |
|
4
10
是和否。不,因为它是一个托管内存模型,所以你不能真正创建错误的缓冲区溢出漏洞。但是,JVM和JDK中可能存在缓冲区溢出漏洞。请参阅此Secunia公告: http://secunia.com/advisories/25295 或者查看这些关于以前几个JDK和JRE漏洞的旧公告:
|
|
|
5
9
从严格意义上讲,覆盖堆栈或堆本身的缓冲区溢出需要以下两种情况之一:
缓冲区溢出是指您的代码使用缓冲区,您的代码负责正确解析它,但可能会失败。 例如,您可能会编写一个XML解析器,有人可能会向您提供一个格式错误的(或合法但不常见的)请求,由于解析器的设计,该请求会用一些有效负载覆盖之前验证的数据,从而导致您的应用程序行为不佳。 后一种形式不太可能,但一个编写糟糕的sql字符串清理函数(广泛分布,存在这样的问题)将是一个诱人的目标。 |
|
|
6
4
Java(和.Net)虚拟机捕获试图在保留内存之外写入的代码。不能正确处理此问题的应用程序仍可能导致安全问题。如果恶意用户可以通过输入无效输入触发异常,他们可以进行拒绝服务攻击。 |
|
|
7
3
正如已经指出的那样,Java作为一种语言,对所有内存访问进行了边界检查,如果这里有错误,则是JVM而不是程序出了问题。然而,应该注意的是,这与Java中的内存泄漏有相似之处;虽然不可能破坏堆栈,但错误位置的ArrayOutOfBoundsException如果处理不当,最终仍可能会破坏系统。 |
|
|
8
3
如果您使用Java Native Interace(JNI)工具调用外部代码,并且外部代码存在可利用的问题,则可能会导致Java程序中的缓冲区溢出。这是相当罕见的,因为大多数应用程序尽可能避免使用JNI。 |
|
9
3
一个方法可能会写入它不打算写入的数组的有效条目,通常是通过整数溢出。 例如,以下内容不足以检查边界:
IIRC,
|
|
|
10
1
JAVA的一个关键特性是安全性。用解释型语言编写的程序不易受到缓冲区溢出漏洞的攻击,但您总是可以在解释器本身中导致缓冲区溢出。 尽管这将是困难的。同样,Python也是一种解释型语言,不会发生缓冲区溢出。 |
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |