Hi,
We have noticed an issue that occurred when we attempted to upgrade to Apache
Tomcat 9.0.96. We found that the <c:out> standard taglib did not properly
escape XML strings anymore. This can lead to cross-site scripting (XSS)
attacks if user input is not properly escaped.
Has anybody else noticed this issue with 9.0.96? Attached is a simple JSP file
that demonstrates the problem.
Tomcat 9.0.95 produces the following output, which is expected.
<html>
<head>
</head>
<body>
<h1>Escape bug</h1>
<ul>
<li><</li>
<li>></li>
<li>"</li>
<li>'</li>
<li>&</li>
</ul>
</body>
</html>
Tomcat 9.0.96 products the following output, which I think may be incorrect.
It escapes the first output, but not any subsequent outputs.
<html>
<head>
</head>
<body>
<h1>Escape bug</h1>
<ul>
<li><</li>
<li>></li>
<li>"</li>
<li>'</li>
<li>&</li>
</ul>
</body>
</html>
I haven't tracked down the source of the issue yet. I haven't logged a bug in
Bugzilla yet. I thought I would start with a question to the users list to see
if anyone else noticed the same behaviour. If you have, please let me know.
Thank you for any and all replies,
Adam
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8" %>
<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>
<%
String s1 = "<";
String s2 = ">";
String s3 = "\"";
String s4 = "'";
String s5 = "&";
%>
<html>
<head>
</head>
<body>
<h1>Escape bug</h1>
<ul>
<li><c:out value="<%= s1 %>" /></li>
<li><c:out value="<%= s2 %>" /></li>
<li><c:out value="<%= s3 %>" /></li>
<li><c:out value="<%= s4 %>" /></li>
<li><c:out value="<%= s5 %>" /></li>
</ul>
</body>
</html>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]