An attacker could try to pass a filename of content that could traverse the server path and control system files. Make sure all user-inputs is checked and sanitized before use.
classTest{@PostMapping(value="/fileupload")publicModelAndViewimportFile(@RequestParam("file")MultipartFilemyFile)throwsIOException{varuser=(WebGoatUser)SecurityContextHolder.getContext().getAuthentication().getPrincipal();vardestinationDir=newFile(fileLocation,user.getUsername());destinationDir.mkdirs();myFile.transferTo(newFile(destinationDir,myFile.getOriginalFilename()));log.debug("File saved to {}",newFile(destinationDir,myFile.getOriginalFilename()));returnnewModelAndView(newRedirectView("files",true),newModelMap().addAttribute("uploadSuccess","File uploaded successful"));}}
Compliant Code Examples
classTest{@PostMapping(value="/fileupload")publicModelAndViewimportFile(@RequestParam("file")MultipartFilemyFile)throwsIOException{// Safe: using sanitized filenameStringsanitizedFilename="upload_"+System.currentTimeMillis()+".dat";FiledestinationDir=newFile(fileLocation);myFile.transferTo(newFile(destinationDir,sanitizedFilename));returnnewModelAndView(newRedirectView("files",true));}}
원활한 통합. Datadog Code Security를 경험해 보세요
Datadog Code Security
이 규칙을 사용해 Datadog Code Security로 코드를 분석하세요
규칙 사용 방법
1
2
rulesets:- java-security # Rules to enforce Java security.
리포지토리 루트에 위의 내용을 포함하는 static-analysis.datadog.yml을 만듭니다
무료 IDE 플러그인을 사용하거나 CI 파이프라인에 Code Security 검사를 추가합니다