浅谈Java代码安全(二)

先来看一段代码:

//x, y, z 都是 int 类型
if (x + y < z) {
}

这段代码是否存在问题呢,可能不仔细或者对数据结构不充分了解的同学就直接这么过了,当然大多数情况下可能这段代码也不会产生问题,但是还是那句话,安全倾向于 “明显没有漏洞”,而不是“没有明显漏洞”,这里的问题是数值类型会溢出,不仅仅会导致程序判断出现误判,严重的话还会影响整个业务,而且难以复现。

完全可以这么写

if(z-x>y){
}

还有类似的数组越界问题也是时常发生,如下

public int test(i){
int [] a={1,2}; 
return a[i];
}

这里如果i=2即会报错:
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException
而这些只要我们做好入参的限制,完全都是可以规避的。

还有如下:

try {  } catch (Exception e){
throw new RuntimeException(hostname + port+"error")
}

有的同学为了方便查找错误直接把出错的信息这么给抛出,一个 Web 应用,异常如果没有良好的包装起来,那么就会把个人信息暴露给客户端,产生信息泄露等问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值