Skip to content

Commit 2ae893b

Browse files
author
kfealz@gmail.com
committed
Updated getSafeFileUpload and removed previous code. Added new method with only 2 parameters. This method uses the default upload location. Updated JUnit tests.
1 parent eee7976 commit 2ae893b

3 files changed

Lines changed: 36 additions & 16 deletions

File tree

src/main/java/org/owasp/esapi/HTTPUtilities.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.owasp.esapi.errors.ValidationException;
3434
import org.owasp.esapi.filters.SafeRequest;
3535
import org.owasp.esapi.filters.SafeResponse;
36+
import org.owasp.esapi.http.MockHttpServletRequest;
3637

3738

3839
/**
@@ -383,4 +384,7 @@ public interface HTTPUtilities {
383384
*/
384385
void logHTTPRequest(HttpServletRequest request, Logger logger, List parameterNamesToObfuscate);
385386

387+
388+
List getSafeFileUploads(HttpServletRequest request, File tempDir) throws ValidationException;
389+
386390
}

src/main/java/org/owasp/esapi/reference/DefaultHTTPUtilities.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.owasp.esapi.errors.ValidationUploadException;
5050
import org.owasp.esapi.filters.SafeRequest;
5151
import org.owasp.esapi.filters.SafeResponse;
52+
import org.owasp.esapi.http.MockHttpServletRequest;
5253

5354
/**
5455
* Reference implementation of the HTTPUtilities interface. This implementation
@@ -344,6 +345,20 @@ public void encryptStateInCookie(HttpServletResponse response, Map cleartext) th
344345
Cookie cookie = new Cookie( "state", encrypted );
345346
response.addCookie( cookie );
346347
}
348+
349+
/**
350+
* Uses the Apache Commons FileUploader to parse the multipart HTTP request
351+
* and extract any files therein. Note that the progress of any uploads is
352+
* put into a session attribute, where it can be retrieved with a simple
353+
* JSP. Places the file in the default upload directory declared in ESAPI.properties.
354+
*
355+
*
356+
* @param request
357+
* @return list of File objects for new files in final directory
358+
*/
359+
public List getSafeFileUploads(HttpServletRequest request, File tempDir) throws ValidationException {
360+
return getSafeFileUploads(request, tempDir, ESAPI.securityConfiguration().getUploadDirectory());
361+
}
347362

348363
/**
349364
* Uses the Apache Commons FileUploader to parse the multipart HTTP request

src/test/java/org/owasp/esapi/reference/HTTPUtilitiesTest.java

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,23 @@ public void testGetFileUploads() throws IOException {
204204
fail();
205205
}
206206

207+
MockHttpServletRequest request4 = new MockHttpServletRequest("/test", content.getBytes());
208+
request4.setContentType( "multipart/form-data; boundary=ridiculous");
209+
ESAPI.httpUtilities().setCurrentHTTP(request4, response);
210+
System.err.println("UPLOAD DIRECTORY: " + ESAPI.securityConfiguration().getUploadDirectory());
211+
try {
212+
List list = ESAPI.httpUtilities().getSafeFileUploads(request4, home);
213+
Iterator i = list.iterator();
214+
while ( i.hasNext() ) {
215+
File f = (File)i.next();
216+
System.out.println( " " + f.getAbsolutePath() );
217+
}
218+
assertTrue( list.size() > 0 );
219+
} catch (ValidationException e) {
220+
System.err.println("ERROR: " + e.toString());
221+
fail();
222+
}
223+
207224
MockHttpServletRequest request3 = new MockHttpServletRequest("/test", content.replaceAll("txt", "ridiculous").getBytes());
208225
request3.setContentType( "multipart/form-data; boundary=ridiculous");
209226
ESAPI.httpUtilities().setCurrentHTTP(request3, response);
@@ -214,22 +231,6 @@ public void testGetFileUploads() throws IOException {
214231
// expected
215232
}
216233

217-
MockHttpServletRequest request4 = new MockHttpServletRequest("/test", content.getBytes());
218-
request2.setContentType( "multipart/form-data; boundary=ridiculous");
219-
ESAPI.httpUtilities().setCurrentHTTP(request2, response);
220-
221-
// TODO: KF
222-
// try {
223-
// List list = ESAPI.httpUtilities().getSafeFileUploads(request2, home, null);
224-
// Iterator i = list.iterator();
225-
// while ( i.hasNext() ) {
226-
// File f = (File)i.next();
227-
// System.out.println( " " + f.getAbsolutePath() );
228-
// }
229-
// assertTrue( list.size() > 0 );
230-
// } catch (ValidationException e) {
231-
// fail();
232-
// }
233234
}
234235

235236
/**

0 commit comments

Comments
 (0)