Skip to content

Commit 41f4a3f

Browse files
committed
Update StringsFromContext to extract Content-Disposition
1 parent 4cc2b4f commit 41f4a3f

1 file changed

Lines changed: 15 additions & 1 deletion

File tree

agent_api/src/main/java/dev/aikido/agent_api/vulnerabilities/StringsFromContext.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
package dev.aikido.agent_api.vulnerabilities;
22

33
import dev.aikido.agent_api.context.ContextObject;
4+
import dev.aikido.agent_api.helpers.ContentDispositionFilename;
45
import dev.aikido.agent_api.helpers.extraction.StringExtractor;
56

7+
import java.util.HashMap;
8+
import java.util.List;
69
import java.util.Map;
10+
import java.util.Optional;
11+
12+
import static dev.aikido.agent_api.context.ContextObject.getHeader;
713

814
public class StringsFromContext {
915
private final Map<String, String> bodyStrings;
@@ -15,7 +21,15 @@ public class StringsFromContext {
1521
public StringsFromContext(ContextObject contextObject) {
1622
bodyStrings = loadFromCache(contextObject, "body", contextObject.getBody());
1723
queryStrings = loadFromCache(contextObject, "query", contextObject.getQuery());
18-
headersStrings = loadFromCache(contextObject, "headers", contextObject.getHeaders());
24+
25+
HashMap<String, List<String>> headers = new HashMap<>(contextObject.getHeaders());
26+
27+
// parse special headers like Content-Disposition to already extract certain values
28+
Optional<String> filename = ContentDispositionFilename.extract(contextObject.getHeader("Content-Disposition"));
29+
filename.ifPresent(s -> headers.put("Content-Disposition[filename]", List.of(s)));
30+
31+
headersStrings = loadFromCache(contextObject, "headers", headers);
32+
1933
cookieStrings = loadFromCache(contextObject, "cookies", contextObject.getCookies());
2034
routeParamStrings = loadFromCache(contextObject, "routeParams", contextObject.getParams());
2135
}

0 commit comments

Comments
 (0)