如何解决如何在Java Rest Controller中修复SQL注入
我在尝试使用对勾标记扫描代码时遇到sql注入错误。我尝试使用metamodel,但是我认为它对我来说不是正常工作。当我尝试使用metamodel调用控制器类时从Junit中显示出来
"excpected <200> but recieved <500> Assertion exception"
在我的控制器代码下面
public class SearchController implements SearchApi {
private static final Logger logger = LoggerFactory.getLogger(SearchController.class);
@Autowired
Service service;
@Override
@GetMapping(value = "jl-search")
public ResponseEntity<Page<SearchDto>> fetchJLSearch(@RequestParam(name = "stpId",required = true) Long stpId,@PageableDefault(page = 0,size = 10) Pageable pageable) {
logger.info("Get JlEntries by stpId {}",stpId);
return ResponseEntity.ok(service.fetchJlPageByCriteria(stpId,pageable));
}
}
对勾标记向我显示stpId可能会导致sql注入并使代码无投诉。 我创建了一个元模型,并尝试使用该模型替换我的代码
@Staticmetamodel(JLDetails.class)
public abstract class JLDetails_ {
public static volatile Singularattribute<JLDetails,String> stpId;
}
这样替换我的控制器代码
return ResponseEntity.ok(service.fetchJlPageByCriteria(JLDetails_.stpId,pageable));
这是我的测试代码
@Test
public void testFetchJlSearch() throws Exception {
when(service.fetchJlPageByCriteria(any(),any())).thenReturn(jlDetailDtoPage);
mockmvc.perform(get(jlDetailsUrl)
.param("stpId","1234") //trying to call using this but getting exception and test is failing
.accept(MediaType.APPLICATION_JSON)
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(jsonPath("$." + "content[0].jledgerStagingId").value(100))
.andExpect(jsonPath("$." + "content[0].stpId").value(200))
.andExpect(jsonPath("$." + "content[0].userJeSourceName").value("CIS3"))
.andExpect(jsonPath("$." + "content[0].userJeCategoryName").value("disC"))
.andExpect(jsonPath("$." + "content[0].accountingDate").value("2020-07-20"))
.andExpect(jsonPath("$." + "content[0].enteredDr").value(200.4))
如果我能解决此问题,请让我知道。谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。