java服务器,Java服务器缓存溢出有哪些呢、

在C程序中,缓存溢出是最常见的安全隐患网站备案java服务器。缓存溢出在用户输入超过已分配内存空间(专供用户输入使用)时出现。缓存溢出可能成为导致应用被覆盖的关键因素。C程序很容易出现缓存溢出,但Java程序几乎不可能出现缓存溢出。从输入流读取输入数据的C代码通常如下所示:java服务器,Java服务器缓存溢出有哪些呢、char buffer[1000];int len = read(buffer);由于缓存的大小在读入数据之前确定,系统要检查为输入保留的缓存是否足够是很困难的。  缓存溢出使得用户能够覆盖程序数据结构的关键部分,从而带来了安全上的隐患。有经验的攻击者能够利用这一点直接把代码和数据插入到正在运行的程序。在Java中,我们一般用字符串而不是字符数组保存用户输入。与前面C代码等价的Java代码如下所示:String buffer = in。  readLine();在这里,“缓存”的大小总是和输入内容的大小完全一致。由于Java字符串在创建之后不能改变,缓存溢出也就不可能出现。退一步说,即使用字符数组替代字符串作为缓存,Java也不象C那样容易产生可被攻击者利用的安全漏洞。例如,下面的Java代码将产生溢出:char[] bad = new char[6];bad[7] = 50;这段代码总是抛出一个java。  lang。ArrayOutOfBoundsException异常,而该异常可以由程序自行捕获:try {har[] bad = new char[6];bad[7] = 50;}catch (ArrayOutOfBoundsException ex) {。  。。 }这种处理过程永远不会导致不可预料的行为。无论用什么方法溢出一个数组,我们总是得到ArrayOutOfBoundsException异常,而Java运行时底层环境却能够保护自身免受任何侵害。一般而言,用Java字符串类型处理字符串时,我们无需担心字符串的ArrayOutOfBoundsExceptions异常,因此它是一种较为理想的选择。  Java编程模式从根本上改变了用户输入的处理方法,避免了输入缓存溢出,从而使得Java程序员摆脱了最危险的编程漏洞。


本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://www.xiaosb.com/beian/24785/