...
Code Block | ||||
---|---|---|---|---|
| ||||
public class SampleServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); String visible = request.getParameter("visible"); String hidden = request.getParameter("hidden"); if (visible != null || hidden != null) { out.println("Visible Parameter:"); out.println( sanitize( visible)); out.println("<br>Hidden Parameter:"); out.println( hidden); } else { out.println("<p>"); out.print("<form action=\""); out.print("SampleServlet\" "); out.println("method=POST>"); out.println("Parameter:"); out.println("<input type=text size=20 name=visible>"); out.println("<br>"); out.println("<input type=hidden name=hidden value=\'a benign value\'>"); out.println("<input type=submit>"); out.println("</form>"); } } /** * Filter the specified message string for characters that are sensitive * in HTML. This avoids potential attacks caused by including JavaScript * codes in the request URL that is often reported in error messages. * * @param message The message string to be filtered */ public static String sanitize(String message) { if (message == null) { return null; } char content[] = new char[message.length()]; message.getChars(0, message.length(), content, 0); StringBuilder result = new StringBuilder(content.length + 50); for (int i = 0; i < content.length; i++) { switch (content[i]) { case '<': result.append("<"); break; case '>': result.append(">"); break; case '&': result.append("&"); break; case '"': result.append("""); break; default: result.append(content[i]); } } return result.toString(); } } |
...
Code Block | ||||
---|---|---|---|---|
| ||||
... if (visible != null || hidden != null) { out.println("Visible Parameter:"); out.println( sanitize( visible)); out.println("<br>Hidden Parameter:"); out.println( sanitize( hidden)); } else { ... |
Consequently, when the malicious URL is entered into a browser, the servlet produces:
...