Skip to content

Commit ae05ccb

Browse files
committed
Add compliant and noncompliant examples of java/unrestricted-file-upload@v1.0
1 parent f8808bf commit ae05ccb

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package detectors.unrestricted_file_upload;
7+
8+
import javax.servlet.http.HttpServletRequest;
9+
import java.io.InputStream;
10+
import java.io.File;
11+
import java.util.HashMap;
12+
import org.springframework.util.StringUtils;
13+
import javax.servlet.ServletException;
14+
15+
public class UnrestrictedFileUpload {
16+
17+
// {fact rule=unrestricted-file-upload@v1.0 defects=1}
18+
public void unrestrictedFileUploadNoncompliant(HttpServletRequest request) {
19+
Part filePart = request.getPart("fileToUpload");
20+
InputStream fileInputStream = filePart.getInputStream();
21+
// Noncompliant: the uploaded file can have any extension.
22+
File fileToSave = new File("WebContent/uploaded-files/" + filePart.getSubmittedFileName());
23+
Files.copy(fileInputStream, fileToSave.toPath(), StandardCopyOption.REPLACE_EXISTING);
24+
response.getOutputStream().println("<p>File was uploaded.</p>");
25+
}
26+
// {/fact}
27+
28+
// {fact rule=unrestricted-file-upload@v1.0 defects=0}
29+
public void unrestrictedFileUploadCompliant(HttpServletRequest request, HttpServletResponse response) {
30+
Part filePart = request.getPart("fileToUpload");
31+
// Compliant: the uploaded file must have one of the allowed extensions.
32+
if (filePart.getSubmittedFileName().endsWith(".jpg") || filePart.getSubmittedFileName().endsWith(".png")) {
33+
InputStream fileInputStream = filePart.getInputStream();
34+
File fileToSave = new File("WebContent/uploaded-files/" + filePart.getSubmittedFileName());
35+
Files.copy(fileInputStream, fileToSave.toPath(), StandardCopyOption.REPLACE_EXISTING);
36+
response.getOutputStream().println("<p>File was uploaded.</p>");
37+
}
38+
else {
39+
response.getOutputStream().println("<p>File was not uploaded.</p>");
40+
}
41+
}
42+
// {/fact}
43+
44+
}

0 commit comments

Comments
 (0)