getLong(name, defaultValue)原来会抛异常

image.png

今日查了一下系统的日志,发现大量这样的错误。一直理解为:controller的getXXX系列不会抛异常,出现转换不成功会返回默认值,没有设置默认值就返回null,今日看了代码,原来不是。是我的使用习惯问题,还是大家用jfinal接收客户端参数都要try catch一下呢?

评论区

zzutligang

2022-05-13 14:33

你这是被参数注入攻击了吧。正常谁会这么干啊

JFinal

2022-05-13 21:37

参数是: "69' union select 1,2--"

这是被 SQL 注入的征兆,注意防范

hhchor

2022-05-23 15:46

注入先不讨论,我的意思是:getLong如果产生异常直接返回默认值,就可以if(getLong("id", 0L) <= 0L){...出错了...} 这样判断参数是否正确,简单高效;但现在要这样try{...getLong("id", 0L) ...}catch(){....}。