diff --git a/apps/i2pcontrol/java/net/i2p/i2pcontrol/servlets/JSONRPC2Servlet.java b/apps/i2pcontrol/java/net/i2p/i2pcontrol/servlets/JSONRPC2Servlet.java index 51e4976ac..145e181c1 100644 --- a/apps/i2pcontrol/java/net/i2p/i2pcontrol/servlets/JSONRPC2Servlet.java +++ b/apps/i2pcontrol/java/net/i2p/i2pcontrol/servlets/JSONRPC2Servlet.java @@ -145,8 +145,9 @@ public class JSONRPC2Servlet extends HttpServlet { @Override protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException { - httpServletResponse.setContentType("text/html"); + setHeaders(httpServletResponse); PrintWriter out = httpServletResponse.getWriter(); + out.println("
"); out.println("I2PControl RPC Service version " + I2PControlVersion.VERSION + " : Running"); if ("/password".equals(httpServletRequest.getServletPath())) { out.println("
"); } else { out.println("Change API Password"); } + out.println(""); out.close(); } /** @since 0.12 */ private void doPasswordChange(HttpServletRequest req, HttpServletResponse httpServletResponse) throws ServletException, IOException { - httpServletResponse.setContentType("text/html"); + setHeaders(httpServletResponse); PrintWriter out = httpServletResponse.getWriter(); + out.println("
"); String pw = req.getParameter("password"); if (pw == null) pw = _secMan.DEFAULT_AUTH_PASSWORD; @@ -194,6 +198,21 @@ public class JSONRPC2Servlet extends HttpServlet { } } out.println("Change API Password"); + out.println(""); + out.close(); + } + + /** + * @since 0.9.48 + */ + private static void setHeaders(HttpServletResponse resp) { + resp.setContentType("text/html"); + resp.setHeader("X-Frame-Options", "SAMEORIGIN"); + resp.setHeader("Content-Security-Policy", "default-src 'self'; style-src 'self'; script-src 'self'; form-action 'self'; frame-ancestors 'self'; object-src 'none'; media-src 'none'"); + resp.setHeader("X-XSS-Protection", "1; mode=block"); + resp.setHeader("X-Content-Type-Options", "nosniff"); + resp.setHeader("Pragma", "no-cache"); + resp.setHeader("Cache-Control","no-cache"); } @Override