安全性检验与异常抛出

          我一向对这方面都不怎么看重的,觉得技术上掌握了,其他细节当然就不是问题。感谢YC师兄,昨天的一番话让我印象深刻,也让我收益菲浅!
         如果自己做的东西很小,不成规模,那还没什么。但是,如果应用范围广,受益群体大,那安全问题就不得不作为一个方面来考虑。今天查了这方面的资料,我的天,还真的有这样的案例。黑客居然可以根据打印在jsp页面上的错误信息攻入服务器~怕怕。
         话题扯远了。
         我之前做的几个页面都没有进行相应的安全性检验,比如说数据类型检验,长度检验,必填项检验。当然了,这些或许不会对系统安全性造成什么损害,但是,对于可能存在的破坏性行为,作为搞技术的,当然要提前杜绝!
         说到数据类型检验,今天这个小小的问题也搞了我一天。
         Hrv检查页面有一输入框,要求用户输入相应的心率值(HeartRate).但是,经过我测试,我随便输入几个字母,竟也能保存!
         FormBean里HeartRate的定义是这样的:         
Private Double heartRate;
         而系统里已经有前人做好的数字检验代码:         
  public   static   boolean  vldNumber(BaseException exp, String value, String arg)  {
                   
if (StringUtil.validStr(value) == null)
                            
return true;
                   
try {
                            Double.parseDouble(value);
                   }
 catch (Exception th) {
                            String arg1 
= "只能填写数字";
                            exp.addErrMsg(
new ActionMessage("errors.invalid2", arg, arg1));
                            
return false;
                   }

                   
return true;
         }

         这段代码的作用是检验字符串value的组成元素是不是都是数字。本来已经很简单,拿来就可以用。
         ApplicationException exp  =   new  ApplicationException();
         ValidationUtil.vldNumber(exp,form.getHeartrate().toString(),
" 心率 " );
         问题出来了, 他一直抛出nullPointerException 的异常,怎么回事呢?通过单步调试才发现,原来,当Jsp页面心率输入框输入非数字内容的时候,form.getHeartrate()返回的值居然是NULL,难怪会抛出这样的异常!没办法,只能自己写检验代码!
         首先,数据类型的检验,我直接用了instanceof!非常简单,非常方便!
         其实,一旦发现数据类型不符合,马上用throw抛出我的异常!
代码如下:
          public   void  vldNumber(Object value)  throws  ApplicationException
         
{
                   
if(value instanceof Double)
                   
{
                            System.err.println(
"类型正确");
                   }

                   
else
                   
{
                            System.err.println(
"类型不正确");
                            ApplicationException exp 
= new ApplicationException();
                            exp.addErrMsg(
new ActionMessage("errors.invalid2""输入","只能输入数字"));
                            
throw exp;
                   }
                 
         }
       
         问题其实很简单,写出来的目的,只是要让自己印象深刻点,要时刻把自己当成独挡一面的技术人员,那么,安全问题当然就不是小问题啦!
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值