Skip to content

Commit de08a1a

Browse files
committed
updated Java Logic
1 parent 50568bd commit de08a1a

File tree

3 files changed

+37
-19
lines changed
  • Path Manipulation
    • while File Read/java/fileread.pathmanipulation/src/main/java/securecodingexamples/fileread/pathmanipulation
    • while File Upload/java/fileupload.pathmanipulation/src/main/java/securecodingexamples/fileupload/pathmanipulation
  • Unrestriced File Upload/java/src/main/java/securecodingexamples/unrestricted/fileupload

3 files changed

+37
-19
lines changed

Path Manipulation/while File Read/java/fileread.pathmanipulation/src/main/java/securecodingexamples/fileread/pathmanipulation/DownloadController.java

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -83,27 +83,34 @@ public ResponseEntity<?> downloadFile(@RequestParam(name = "filename", required
8383
}
8484
}
8585

86-
private static boolean isValidName(String filename) {
87-
String name = filename.split("\\.", 2)[0];
88-
if(name.isEmpty()) {
86+
//Logic to validate just the extension part of the filename
87+
private static boolean isValidExtension(String filename) {
88+
if(!filename.contains(".")){
8989
return false;
9090
}
91-
return name.matches(FILENAME_REGEX_PATTERN.pattern());
92-
}
93-
94-
private static String validFilename(String filename) {
95-
String name = filename.split("\\.", 2)[0];
96-
String extension = filename.split("\\.", 2)[1];
97-
return name + "." + extension;
98-
}
99-
100-
private static boolean isValidExtension(String filename) {
101-
String extension = filename.split("\\.", 2)[1];
91+
String extension = filename.substring(filename.lastIndexOf(".") + 1);
10292
for (String ext : ALLOWED_EXTENSIONS) {
10393
if (ext.equals(extension)) {
10494
return true;
10595
}
10696
}
10797
return false;
10898
}
99+
100+
//Logic to Validate just the name part of the filename
101+
private static boolean isValidName(String filename) {
102+
if(!filename.contains(".")){
103+
return false;
104+
}
105+
String name = filename.substring(0, filename.lastIndexOf("."));
106+
return name.matches(FILENAME_REGEX_PATTERN.pattern());
107+
}
108+
109+
//Logic to return the valide Filename (after validating)
110+
private static String validFilename(String filename) {
111+
int dotIndex = filename.lastIndexOf(".");
112+
String name = filename.substring(0, dotIndex);
113+
String extension = filename.substring(dotIndex + 1);
114+
return name + "." + extension;
115+
}
109116
}

Path Manipulation/while File Upload/java/fileupload.pathmanipulation/src/main/java/securecodingexamples/fileupload/pathmanipulation/UploadController.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,12 @@ public ResponseEntity<?> uploadFile(@RequestParam("file") MultipartFile file) {
7373
}
7474
}
7575

76+
//Logic to validate just the extension part of the filename
7677
private static boolean isValidExtension(String filename) {
77-
String extension = filename.split("\\.", 2)[1];
78+
if(!filename.contains(".")){
79+
return false;
80+
}
81+
String extension = filename.substring(filename.lastIndexOf(".") + 1);
7882
for (String ext : ALLOWED_EXTENSIONS) {
7983
if (ext.equals(extension)) {
8084
return true;
@@ -83,17 +87,24 @@ private static boolean isValidExtension(String filename) {
8387
return false;
8488
}
8589

90+
//Logic to Validate just the name part of the filename
8691
private static boolean isValidName(String filename) {
87-
String name = filename.split("\\.", 2)[0];
92+
if(!filename.contains(".")){
93+
return false;
94+
}
95+
String name = filename.substring(0, filename.lastIndexOf("."));
8896
return name.matches(FILENAME_REGEX_PATTERN.pattern());
8997
}
9098

99+
//Logic to return the valide Filename (after validating)
91100
private static String validFilename(String filename) {
92-
String name = filename.split("\\.", 2)[0];
93-
String extension = filename.split("\\.", 2)[1];
101+
int dotIndex = filename.lastIndexOf(".");
102+
String name = filename.substring(0, dotIndex);
103+
String extension = filename.substring(dotIndex + 1);
94104
return name + "." + extension;
95105
}
96106

107+
//Logic to return the unique Filename, so the file with same filename will not be overwritten
97108
private static String getUniqueFilename(String filename) {
98109
String name = filename.split("\\.", 2)[0];
99110
String extension = filename.split("\\.", 2)[1];

Unrestriced File Upload/java/src/main/java/securecodingexamples/unrestricted/fileupload/UploadController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public class UploadController{
3131
private static final String[] ALLOWED_EXTENSIONS = {"jpg", "png", "pdf"}; //jpg, png, pdf
3232
private static final Pattern FILENAME_REGEX_PATTERN = Pattern.compile("[a-zA-Z0-9-_]+");
3333

34-
//MAGIC_NUMBERS HashMap to contain the magic numbers of the files.
34+
//MAGIC_NUMBERS HashMap to contain the allowed magic numbers of the files.
3535
private static final Map<String, String> MAGIC_NUMBERS = new HashMap<String, String>();
3636

3737
static{

0 commit comments

Comments
 (0)