在C程序中,缓存溢出是最常见的安全隐患。缓存溢出在用户输入超过已分配内存空间(专供用户输入使用)时出现。缓存溢出可能成为导致应用被覆盖的关键因素。C程序很容易出现缓存溢出,但Java程序几乎不可能出现缓存溢出。从输入流读取输入数据的C代码通常如下所示:

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程序员摆脱了最危险的编程漏洞。

全部

java服务器缓存_Java服务器缓存溢出有哪些呢、?相关推荐

  1. java 全局缓存_java本地缓存

    1.为什么要使用缓存 由于服务器.数据库.网络等资源有限,无法支撑越来越多的请求与计算量,所以将一部分数据放在缓存中,以此减小薄弱环节的计算量和请求流程. 网站中缓存的应用场景:1:可以缓存整个页面的 ...

  2. java常用的缓存_java 常用缓存 - 只对肉有感觉的个人空间 - OSCHINA - 中文开源技术交流社区...

    缓存是日常开发的粗茶淡饭,如果应用对某类数据有着较高的读取频次,并且改动较小时那就非常适合利用缓存来提高性能 JVM 缓存 使用全局变量,如 Map.List等容器用于存放数据,可以认为是堆缓存 eh ...

  3. java 线程缓存_Java 实现缓存,一个线程存,一个线程取

    缓存类: package com.zit.test; import java.util.concurrent.BlockingDeque; import java.util.concurrent.Li ...

  4. java 静态缓存_JAVA缓存的实现

    package lhm.hcy.guge.frameset.cache; import java.util.*; /** * Title: * * Description: 管理缓存 * Deep b ...

  5. linux nginx 缓存服务器,linux nginx 图片缓存服务器

    弹性云服务器 ECS 弹性云服务器(Elastic Cloud Server)是一种可随时自助获取.可弹性伸缩的云服务器,帮助用户打造可靠.安全.灵活.高效的应用环境,确保服务持久稳定运行,提升运维效 ...

  6. Vue、React打包文件放在服务器,浏览器存在缓存问题的解决

    Vue.React打包文件放在服务器,浏览器存在缓存问题的解决 参考文章: (1)Vue.React打包文件放在服务器,浏览器存在缓存问题的解决 (2)https://www.cnblogs.com/ ...

  7. (chap5 web服务器) 保存资源的缓存

    1. 概念 缓存是指代理服务器或客户端本地磁盘内保存的资源副本. 利用缓存可减少对源服务器的访问,因此也就节省了通信流量和通信时间. 缓存服务器是代理服务器的一种,并归类在缓存代理类型中.换句话说,当 ...

  8. 缓存nginx服务器的静态文件

    ------26--张立-- 目的: 缓存nginx服务器的静态文件.如css,js,htm,html,jpg,gif,png,flv,swf,这些文件都不是经常更新.便于缓存以减轻服务器的压力. 实 ...

  9. 怎么清理文件缓存文件云服务器,服务器运行内存怎么清理缓存

    服务器运行内存怎么清理缓存 内容精选 换一换 系统长期运行后,free命令查看系统内存,发现剩余内存不足,大部分是buffers和cached.在 Linux 的内存管理中,buffer是Linux内 ...

最新文章

  1. 判断设备网络状态_生成树RSTP,快速生成树协议,交换网络必用的破环协议,面试必备...
  2. 解密!谷歌这样搞定美军世纪难题,从眼科诊断到无人驾驶
  3. 研究38位知名CEO的邮件后,我们有这9个发现
  4. nginx中文件路径表示方法
  5. 安装软件要求输入服务器配置信息,信息技术考试软件配置安装与操作规范(管理服务端与客户端)(30页)-原创力文档...
  6. dart系列之:还在为编码解码而烦恼吗?用dart试试
  7. 为什么Angular的路由执行离不开router-outlet标签
  8. SQL Server 索引和表体系结构(三)
  9. linux基础-文本编辑器,Linux基础之vim文本编辑器
  10. 中随机打乱序列的函数_excel函数应用:如何快速制作考生座次分配表
  11. spring boot组件_Spring Boot Framework的关键组件和内部
  12. java中如何返回四维数组_如何从Java中的方法返回数组?
  13. 恢复Windows默认文件资源管理器(Files设置后,恢复亲测可用)
  14. socket编程详解(一)——服务器端
  15. [原创]Base32加密解密工具
  16. 对封装的ajax的应用-查询商铺
  17. 将自己训练的MASK-RCNN模型用于摄像头实时检测
  18. Latex中调整多行公式行距(间距)的方法
  19. 一看就懂的网络协议五层模型(一)
  20. 实体 联系 模型mysql_实体关系模型和关系模型之间有什么区别?

热门文章

  1. 【PAT乙级】1063 计算谱半径 (20 分)
  2. MySQL查看数据表
  3. 红帽linux6.0安装教程,第 14 章 引导安装程序
  4. 一天1个机器学习知识点(三)
  5. 美团一面:你既然写过Mybatis插件,能给我说说它底层是怎么加载一个自定义插件的吗?...
  6. 如何用 SpringBoot 实现并发登录人数控制(附代码)
  7. Tomcat maven 插件启动出现tomcat\conf\tomcat-users.xml cannot be read异常解决方法
  8. java网络编程(三)
  9. mybatis教程--映射之一对一查询
  10. Oracle数据库之数据处理