Skip to content

Commit 5ee097d

Browse files
committed
Address issue #1222: verify that classifier and outputFormat are valid values before returning them in headers. Should sanitize malicious output
1 parent 85e305b commit 5ee097d

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

src/edu/stanford/nlp/ie/ner/webapp/NERServlet.java

+15-7
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ public void init() throws ServletException {
6363
log(classifier);
6464
}
6565

66-
ners = Generics.newHashMap();
66+
ners = new HashMap<>();
6767
for (String classifier : classifiers) {
68-
CRFClassifier model = null;
68+
CRFClassifier<CoreMap> model = null;
6969
String filename = "/WEB-INF/data/models/" + classifier;
7070
InputStream is = getServletConfig().getServletContext().getResourceAsStream(filename);
7171

@@ -154,15 +154,23 @@ private void addResults(HttpServletRequest request,
154154
classifier = this.defaultClassifier;
155155
}
156156

157-
response.addHeader("classifier", classifier);
158-
response.addHeader("outputFormat", outputFormat);
159-
response.addHeader("preserveSpacing", String.valueOf(preserveSpacing));
157+
CRFClassifier<CoreMap> nerModel = ners.get(classifier);
158+
// check that we weren't asked for a classifier that doesn't exist
159+
if (nerModel == null) {
160+
out.print(StringEscapeUtils.escapeHtml4("Unknown model " + classifier));
161+
return;
162+
}
160163

161164
if (outputFormat.equals("highlighted")) {
162-
outputHighlighting(out, ners.get(classifier), input);
165+
outputHighlighting(out, nerModel, input);
163166
} else {
164-
out.print(StringEscapeUtils.escapeHtml4(ners.get(classifier).classifyToString(input, outputFormat, preserveSpacing)));
167+
out.print(StringEscapeUtils.escapeHtml4(nerModel.classifyToString(input, outputFormat, preserveSpacing)));
165168
}
169+
170+
response.addHeader("classifier", classifier);
171+
// a non-existent outputFormat would have just thrown an exception
172+
response.addHeader("outputFormat", outputFormat);
173+
response.addHeader("preserveSpacing", String.valueOf(preserveSpacing));
166174
}
167175

168176
private static void outputHighlighting(PrintWriter out,

0 commit comments

Comments
 (0)