如何屏蔽---------------代码new byte大数值的漏洞?

雄牛 2017-05-23 09:48:19

可以指定大量数据导致服务器上的高资源。

用于数组大小的无效用户输入''in.available()' '


InputStream in = null;
byte[] data = null;

//读取图片字节数组
in = new FileInputStream(imgPath);
data = new byte[in.available()]; //这里的代码扫描有问题
in.read(data);


...全文
179 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
podd 2017-05-23
  • 打赏
  • 举报
回复
不等于
podd 2017-05-23
  • 打赏
  • 举报
回复
int count = in.available(); byte[] b = new byte[count]; in.read(b); 在进行网络操作时往往出错,因为你调用available()方法时,对发发送的数据可能还没有到达,你得到的count是0。 需要改成这样: int count = 0; while (count == 0) { count = in.available(); } byte[] b = new byte[count]; in.read(b);
podd 2017-05-23
  • 打赏
  • 举报
回复
int count = in.available(); byte[] b = new byte[count]; in.read(b); 在进行网络操作时往往出错,因为你调用available()方法时,对发发送的数据可能还没有到达,你得到的count是0。 需要改成这样: int count = 0; while (count == 0) { count = in.available(); } byte[] b = new byte[count]; in.read(b);
李德胜1995 2017-05-23
  • 打赏
  • 举报
回复
引用 2 楼 cowbo 的回复:
[quote=引用 1 楼 pany1209 的回复:] data = new byte[in.available()] 改为

data = new byte[1024];如何。。。
这个会影响原有的功能吗? 这个是将图片文件转化为字节数组字符串,并对其进行Base64编码处理[/quote] 代码修改一下。。。。

ByteArrayOutputStream bos=null;
data=new byte[1024];
int len=0;
bos=new ByteArrayOutputStream();
while((len=is.read(data))!=-1){
	bos.write(data, 0, len);
}

Base64.encodeBase64String(bos.toByteArray());就可以了。。。
podd 2017-05-23
  • 打赏
  • 举报
回复
参考这个http://www.cnblogs.com/MyFavorite/archive/2010/10/19/1855758.html
雄牛 2017-05-23
  • 打赏
  • 举报
回复
引用 1 楼 pany1209 的回复:
data = new byte[in.available()] 改为

data = new byte[1024];如何。。。
这个会影响原有的功能吗? 这个是将图片文件转化为字节数组字符串,并对其进行Base64编码处理
李德胜1995 2017-05-23
  • 打赏
  • 举报
回复
data = new byte[in.available()] 改为

data = new byte[1024];如何。。。

81,114

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧