Skip to content

Commit a618181

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

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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 javax.servlet.http.HttpServletResponse;
10+
import java.io.InputStream;
11+
import java.io.File;
12+
import java.util.HashMap;
13+
import org.springframework.util.StringUtils;
14+
import javax.servlet.ServletException;
15+
import javax.servlet.http.Part;
16+
import java.io.IOException;
17+
import java.nio.file.Files;
18+
import java.nio.file.StandardCopyOption;
19+
20+
public class UnrestrictedFileUpload {
21+
22+
// {fact rule=unrestricted-file-upload@v1.0 defects=1}
23+
public void unrestrictedFileUploadNoncompliant(HttpServletRequest request, HttpServletResponse response) throws IOException {
24+
Part filePart = request.getPart("fileToUpload");
25+
InputStream fileInputStream = filePart.getInputStream();
26+
// Noncompliant: the uploaded file can have any extension.
27+
File fileToSave = new File("WebContent/uploaded-files/" + filePart.getSubmittedFileName());
28+
Files.copy(fileInputStream, fileToSave.toPath(), StandardCopyOption.REPLACE_EXISTING);
29+
response.getOutputStream().println("<p>File was uploaded.</p>");
30+
}
31+
// {/fact}
32+
33+
// {fact rule=unrestricted-file-upload@v1.0 defects=0}
34+
public void unrestrictedFileUploadCompliant(HttpServletRequest request, HttpServletResponse response) throws IOException {
35+
Part filePart = request.getPart("fileToUpload");
36+
// Compliant: the uploaded file must have one of the allowed extensions.
37+
if (filePart.getSubmittedFileName().endsWith(".jpg") || filePart.getSubmittedFileName().endsWith(".png")) {
38+
InputStream fileInputStream = filePart.getInputStream();
39+
File fileToSave = new File("WebContent/uploaded-files/" + filePart.getSubmittedFileName());
40+
Files.copy(fileInputStream, fileToSave.toPath(), StandardCopyOption.REPLACE_EXISTING);
41+
response.getOutputStream().println("<p>File was uploaded.</p>");
42+
}
43+
else {
44+
response.getOutputStream().println("<p>File was not uploaded.</p>");
45+
}
46+
}
47+
// {/fact}
48+
49+
}

0 commit comments

Comments
 (0)