网站首页 文章专栏 springboot 之参数校验详解
前言 :在本博客的其中一个方法上使用了@Validated注解来获取url上的参数,但是因为是url上参数,有可能被恶意破坏数据构,比如超长的字符串,各种乱七八糟的字符,小数。。。。等等情况,其实可以设置点东西,就能防止这种情况了,随便再学习下springboot的参数校验。 |
@GetMapping("/find/{id}/detail") public ModelAndView findSomeOne(Map<String, Object> map,@PathVariable("id") Integer id){ use id do something... }
比如上述代码中,在GetMapping的路径中有个变量id,在入参中获取到传递进来,注意这里的id为Integer类型的,也就是说路径中的参数只能为纯数字,且不能超出Integer范围,当有人故意将id改成字符串,或者小数,超出范围的数字都会使得代码报错。
那么怎么办呢,如果将Integer 改成String,那么入参不管是什么都能进来,但是这个数据对不对就又不一定了,只能在代码里面再去解析判断,很麻烦,@Validated还有一种用法就是,在路径中做出限制,用正则表达式限制其形式,这样当参数不满足正则表达式的话,不合法的URL则不会被处理,直接由框架返回404Not Found。
@GetMapping("/find/{id:[0-9_]{1,5}+}/detail") public ModelAndView findSomeOne(Map<String, Object> map,@PathVariable("id") Integer id){ use id do something... }
这样就限制id只能是1-5位的纯数字,其他情况则被框架直接返回404.
对表单的校验,方法参的校验,自定义校验,非空校验后面有空再写。
版权声明:本文由星尘阁原创出品,转载请注明出处!